找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1139|回复: 11
打印 上一主题 下一主题
收起左侧

又没人帮我看看单片机程序那出错了

[复制链接]
跳转到指定楼层
楼主
ID:493355 发表于 2019-3-18 17:43 来自手机 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include<reg52.h>
                                                  //#define S1 3        ;                //S1 开关返回的数值
                                                  //#define Request 1;                //请求开关返回的值
sfr P5=0xc8;                                                 //#define Over 2;                         //结束开关返回的值
#define table  P1
sbit gewei=P2^6;                //数码管个位
sbit shiwei=P0^0;              //P5^5;                数码管十位
sbit LED1=P2^7;
sbit LED2=P2^5;                        
sbit Bell=P0^1;              //P5^4;               
sbit OutCrtl=P3^7;                //继电器开关
sbit PowerCrtl=P3^2;
sbit S1_K=P2^4;
sbit Request_K = P3^3;
sbit Over_K=P3^4;
unsigned int min=30;                                         //秒
unsigned int gw           ;
unsigned  int sw  ;
unsigned int num;
unsigned char Code[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};                        
int Key_Press();                 //按键扫描
void Delay_Ms(unsigned int );    //延时1MS
void LED_BELL()
{
        int i=0;
        for(i;i<5;i++)
        {        LED1=0;
                LED2=0;
                Bell=1;
                Delay_Ms(10);
                LED1=1;
                LED2=1;
                Bell=0;         
        }
}
void Display()
{
                gw=min%10;
                sw=min/10;
                gewei=0;
             P1=Code[gw];
                Delay_Ms(2);
                shiwei=0;
            P1=Code[sw];
                if(min==0)
                {
                        EA=1;
                }
                        
}
int Key_Press()
{
        if(S1_K==0)
        {
                Delay_Ms(2);
                if(S1_K==0)
                return 3;
        }
        if(Request_K==0)
        {
                Delay_Ms(2);
                if(Request_K==0)
                return 1;
        }
        if(Over_K==0)
        {
                Delay_Ms(2);
                if(Over_K==0)
                return  2;
        }
}
//组要计数的个数N=t/T(机器周期)
//机器周期=12*(时钟周期)1/晶振频率
void Delay_1Ms(unsigned int n)
{
        unsigned int i,j;
        for(j=n;j>0;j--)
        for(i=112;i>0;i--);
}
// 晶振按12MHZ计算
void T1_Init()
{
        TMOD=0x10;
        TL1= (65536-50000)%256;                                         //50000*10^-6=0.5s
        TH1= (65536-50000)/256;                                         //1MHZ=10^6HZ  ; 1/f=1us
        ET1= 1;
        TR1= 1;
        EA= 1;
}
int main()
{
        int K_Date;
         T1_Init();
        K_Date=Key_Press();
        if(K_Date=1)
                 {
                         Display();
                         LED_BELL();
                         if(K_Date==3)
                         {
                                  OutCrtl=1;
                         }
                         if(Over_K==2)
                         {
                                 gewei=0;
                                shiwei=0;
                                LED1=1;
                                LED2=1;
                                Bell=0;
                                OutCrtl=0;
                         }        
                }
}
void TimerCounter_1(void) interrupt 3
{
         TL1= (65536-50000)%256;                                         //50000*10^-6=0.5s
        TH1= (65536-50000)/256;                                         //1MHZ=10^6HZ  ; 1/f=1us
        num++;
        if(num==20)
num=0
        min--;
}
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:493355 发表于 2019-3-18 17:44 来自手机 | 只看该作者
很急   希望各位大佬帮我看看
回复

使用道具 举报

板凳
ID:1 发表于 2019-3-18 18:28 | 只看该作者
您这个问题给的信息不全,估计是没人能回答得了的,先转移到冷门区了,自行点击编辑按钮补充一下吧,审核员会帮你重新转到热门问答区的
回复

使用道具 举报

地板
ID:493355 发表于 2019-3-18 18:40 来自手机 | 只看该作者
  按request 二位数码管开关 30计数到00  led灯亮 蜂鸣器响  如果30秒之内按s1   继电器开  如果按over 所有关闭
回复

使用道具 举报

5#
ID:493355 发表于 2019-3-18 18:41 来自手机 | 只看该作者
admin 发表于 2019-3-18 18:28
您这个问题给的信息不全,估计是没人能回答得了的,先转移到冷门区了,自行点击编辑按钮补充一下吧,审核员 ...

好的  谢谢
回复

使用道具 举报

6#
ID:493355 发表于 2019-3-18 20:28 来自手机 | 只看该作者
  按request 二位数码管开关 30计数到00  led灯亮 蜂鸣器响  如果30秒之内按s1   继电器开  如果按over 所有关闭
回复

使用道具 举报

7#
ID:284488 发表于 2019-3-18 21:35 | 只看该作者
int main()
{
        int K_Date;
        T1_Init();
        K_Date=Key_Press();
        if(K_Date=1)
修正
int main()
{
        int K_Date;
         T1_Init();
        K_Date=Key_Press();
        if(K_Date==1)

============================================

void TimerCounter_1(void) interrupt 3
{
       TL1= (65536-50000)%256;         //50000*10^-6=0.5s
        TH1= (65536-50000)/256;           //1MHZ=10^6HZ  ; 1/f=1us
        num++;
        if(num==20)
     num=0
        min--;
}

修正
void TimerCounter_1(void) interrupt 3
{
       TL1= (65536-50000)%256;         //50000*10^-6=0.5s
        TH1= (65536-50000)/256;           //1MHZ=10^6HZ  ; 1/f=1us
        num++;
        if(num==20)
         {
            num=0;
            min--;
         }
}
先修正此2处看看吧!
回复

使用道具 举报

8#
ID:284488 发表于 2019-3-18 21:46 | 只看该作者
int main()i主函式里面感觉好像也有问题
回复

使用道具 举报

9#
ID:493355 发表于 2019-3-19 00:28 来自手机 | 只看该作者
lon7085 发表于 2019-3-18 21:35
int main()
{
        int K_Date;

好的  谢谢
回复

使用道具 举报

10#
ID:460636 发表于 2019-3-19 08:50 | 只看该作者
哎,万事开头难啊。。
回复

使用道具 举报

11#
ID:428114 发表于 2019-3-19 10:37 | 只看该作者
把错误信息写出来嘛。这样只写程序功能和代码,要别人怎么弄?
花太多时间的话,估计没人帮你。
回复

使用道具 举报

12#
ID:493355 发表于 2019-3-19 19:31 来自手机 | 只看该作者
按键 protues仿真出现的一直是高电平
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表