一个按键控制数码管的开和关_求助,单片机编了一个独立按键控制数码管的程序,错误...

我太不认真了,错误一大堆,刚修改好了,贴出来

#include

#define uchar unsigned char

#define uint unsigned int

sbit key1=P2^7;

sbit key2=P2^6;

sbit key3=P2^5;

sbit key4=P2^4;

char num,num0;

uchar code table[]={

0x3f,0x06,0x5b,0x4f,0x66,

0x6d,0x7d,0x07,0x7f,0x6f};                                //共阴极字模

void delay(uint);                                                        //声明延时子函数

void display(uchar numdis)                                //显示子函数

{

uchar shi,ge;

shi=numdis/10;                                                        //十位数

ge=numdis%10;                                                        //个位

P0=table[shi];                                                        //段选

P1=0x7f;                                                                        //位选

delay(5);                                                                //

P0=table[ge];

P1=0xbf;

delay(5);

}

void delay(uint xms)                                                //延时子函数

{

uint i,j;

for(i=xms;i>0;i--)

for(j=10;j>0;j--);

}

void keyscan()                                                        //键盘

{

if(key1==0)

{

delay(5);

if(key1==0)

{

num++;

if(num==60)

num=0;                        //如果key1=0,num+1

while(!key1);

}

}

if(key2==0)

{

delay(5);

if(key2==0)

{

num--;

if(num==-1)

num=0;

while(!key2);

}

}

if(key3==0)

{

delay(5);

if(key3==0)

{

num=0;                                        //如果key3=0;num=0

while(!key3);

}

}

if(key4==0)

{

delay(5);

if(key4==0)

{

while(!key4);

TR0=~TR0;                        //启动或停止定时器

}

}

}

void main()                                                        //主函数

{

TMOD=0x01;                                                //定时器一

TH0=(65536-55536)/256;

TL0=(65536-55536)%256;

EA=1;

ET0=1;

TR0=0;

while(1)

{

if(num0==20)

{

num++;

num0=0;

}

if(num==60)

num=0;

keyscan();

display(num);

}

}

void timer0() interrupt 1                         //中断1

{

TH0=(65536-55536)/256;                //重装初值

TL0=(65536-55536)%256;

num0++;

}

说明:P1口位选,P0口段选,P2.7 2.6 2.5 2.4接key1 2 3 4键,key1按下数字加一,key2按下数字减一,key3按下数字清零,key4按下计数开始或暂停

表情包
插入表情
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符
相关推荐
©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页