标题:单片机和Proteus
只看楼主
祝你前程似锦
Rank: 1
等 级:新手上路
帖 子:40
专家分:0
注 册:2020-2-6
结帖率:70%
 问题点数:0 回复次数:2 
单片机和Proteus
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit key1 = P3^4;
sbit key2 = P3^5;
sbit key3 = P3^6;
sbit key4 = P3^7;
sbit dula = P2^6;
sbit wela = P2^7;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71
};
void delay(uint);
uchar numt0,num;
void display(uchar numdis)
{
    uchar shi,ge;
    shi = numdis/10;
    ge = numdis%10;
    dula = 1;
    P0 = table[shi];
    dula = 0;
    P0 = 0xff;
    wela = 1;
    P0 = 0xfe;
    wela = 0;
    delay(5);

    dula = 1;
    P0 = table[ge];
    dula = 0;
    P0 = 0xff;
    wela = 1;
    P0 = 0xfd;
    wela = 0;
    delay(5);
   
    dula = 1;
    P0 = table[];
    dula = 0;
    P0 = 0xff;
    wela = 1;
    P0 = 0xfb;
    wela = 0;
    delay(5)   
}
void delay(uint z)
{
    uint i,j;
    for(i = z;i > 0;i--)
    for(j = 110;j > 0;j--);
}               
void init()
{
TMOD = 0x01;
TH0 = (65536 - 50000)/256;
TL0 = (65536 - 50000)%256;
EA = 1;
ET0 = 1;
}
void keyscan()
{
    if(key1 == 0)
    {
        delay(10);
        if(key1 == 0)
        {
            num++;
            if(num == 60)
                num = 0;
                while(!key1);
        }
    }
    if(key2 == 0)
    {
        delay(10);
        if(key2 == 0)
        {
            if(num == 0)
                num = 60;
                num--;
                while(!key2);
        }
    }
    if(key3 == 0)
    {
        delay(10);
        if(key3 == 0)
        {
            num = 0;
            while(!key3);
        }
    }
    if(key4 == 0)
    {
        delay(10);
        if(key4 == 0)
        {
            while(!key4);
            TR0 = ~TR0;
        }
    }

}
void main()
{
     init();
    while(1)
    {
        keyscan();
        display(num);
    }

}                           
void T0_time()interrupt 1
{
    TH0 = (65536 - 50000)/256;
    TL0 = (65536 - 50000)%256;
    numt0++;
   
    if(numt0 == 20)
    {
        numt0 = 0;
        num++;
        if(num == 60)
        num = 0;
    }
}
这是我程序
为了实现产生两个数然后按按键他能自己加或减,但是仿真的时候会出错不知道为什么?
下面是我proteus;

搜索更多相关主题的帖子: void table delay num while 
2020-11-03 19:40
祝你前程似锦
Rank: 1
等 级:新手上路
帖 子:40
专家分:0
注 册:2020-2-6
得分:0 
回复 楼主 祝你前程似锦
第三个那个是我刚才临时加的还没写完,但是前两个就不能用了何况加第三个。。。
2020-11-03 19:41
祝你前程似锦
Rank: 1
等 级:新手上路
帖 子:40
专家分:0
注 册:2020-2-6
得分:0 
回复 楼主 祝你前程似锦
就是那个0xfb那个
2020-11-03 19:43



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-503750-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.263784 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved