#includereg51.h
#define uchar unsigned char
uchar tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00}; //0到9
uchar num,cnt,disn;
uchar keyval,disk;
uchar led[]={1,2,3,4};
void dealdat(uchar a)
{
led[0]=0;
led[1]=0;
led[2]=0;
led[3]=0;
led[a]=disk;
}
void delay(unsigned int a)
{
unsigned int i,j;
for(i=0;ia;i++)
for(j=0;j1000;j++);
}
void t0isr() interrupt 1
{
TH0=(65536-5000)/256;
TL0=(65536-5000)%256;
switch(num)
{
case 0:P2=0x01;break;
case 1:P2=0x02;break;
case 2:P2=0x04;break;
case 3:P2=0x08;break;
default:break;
}
P0=~tab[led[num]];
num++;
num=0x03;
cnt++;
if(cnt100)
{
cnt=0;
disn++;
disn%=4;
dealdat(disn);
}
}
uchar kbscan(void)
{
unsigned char sccode,recode;
P3=0x0f; //发0扫描,列线输入
if ((P3 0x0f) != 0x0f) //有键按下
{
// delay(20); //延时去抖动
if ((P30x0f)!= 0x0f)
{
sccode = 0xef; //逐行扫描初值
while((sccode0x01)!=0)
{
P3=sccode;
if((P30x0f)!=0x0f)
{
recode=(P30x0f)|0xf0;
return((~sccode)+(~recode));
}
else
sccode=(sccode1)|0x01;
}
}
}
return 0; //无键按下,返回0
}
void getkey(void)
{
unsigned char key;
key=kbscan();
if(key==0){keyval=0xff;return;}
switch(key)
{
case 0x11:keyval=7;break;
case 0x12:keyval=4;break;
case 0x14:keyval=1;break;
case 0x18:keyval=10;break;
case 0x21:keyval=8;break;
case 0x22:keyval=5;break;
case 0x24:keyval=2;break;
case 0x28:keyval=0;break;
case 0x41:keyval=9;break;
case 0x42:keyval=6;break;
case 0x44:keyval=3;break;
case 0x48:keyval=11;break;
case 0x81:keyval=12;break;
case 0x82:keyval=13;break;
case 0x84:keyval=14;break;
case 0x88:keyval=15;break;
default:keyval=0xff;break;
}
}
main()
{
TMOD=0x11;
TH0=(65536-5000)/256;
TL0=(65536-5000)%256;
TR0=1;
ET0=1;
EA=1;
while(1)
{
getkey();
if(keyval!=0xff)disk=keyval;
delay(10);
}
}
TH0 = 0xf6;
TL0 = 0xff;
上两行是定时器/计数器T0的初值,因为T0是16位的,所以用TH0表示高八位,TL0表示低八位
TH1 = 0xfd;
TL1 = 0xfd;
T1初值
TMOD = 0x21;
定时器/计数器模式控制寄存器 如图
GATE=1时,由外部中断引脚INT0、INT1来启动定时器T0、T1
GATE=0时,仅由TR0,TR1置位分别启动定时器T0、T1。
C/T=0时为定时功能,C/T=1时为计数功能
M0、M1——方式选择功能
M1M0 工作方式 计数器模式 TMOD(设置定时器模式)
0 0 方式0 13位计数器 TMOD=0x00
0 1 方式1 16位计数器 TMOD=0x01
1 0 方式2 自动重装8位计数器 TMOD=0x02
1 1 方式3 T0分为2个8位独立计数器,T1为无中断重装8位计数器 TMOD=0x03
PCON = 0x00;
PCON主要是为CHMOS型单片机的电源控制而设置的专用寄存器
WDCON = 0x00;清狗
SCON = 0x50;
SCON1 = 0x40;
串口控制寄存器
电脑自动重启是什么原因
1. 用户在不知情的情况下运行了黑客设计好的木马陷阱,一旦进入网民将会成为黑客的傀儡,任意操被作。
2. 系统程序遭到破坏,由于没有完美修复也成为电脑自动重启的原因。
3. 不兼容问题,由于程序存在不兼容情况也会出现电脑自动重启情况。
4. 硬件问题,内存、电源、硬盘等硬件出现问题都会出现电脑自动重启问题。
金山毒霸免费杀毒软件拥有病毒查杀功能外,还有用强大系统修复功,保证网民电脑系统完好如初、不仅如此免费杀毒软件 金山毒霸还拥有系统清理和安全百宝箱等强大功能.
教熟本身 学习 停止 的时刻 ,都邑 学习 学习 学习 学习 学习 学习 学习 学习 学习 学习 学习 学习...
毛遂自荐 是背他人 先容 本身 最间接的一个手腕 ,然则 毛遂自荐 的内容也是跟着 场所 而产生 转变 的,咱...
工作怀疑是工作人员与雇主 之间的桥梁。通过这个过程, 将不可避免地相互交流。他们彼此都很熟悉。 在接流的基础上...
应慢计划是指面对 突发事件 ,如 自然 灾害、重特殊除夕 混乱 、情况 私害和工资 粉碎 应慢处理 、救援计划...
除夕 教学贷款主要是指由当局 主导的国家 教学贷款公开财务 战下学校合作 给予 不可避免的风险赔偿 金、银、学...
许多 人愤怒和悲伤地写自我 总结,尤其是对待 这些积极的党员写自我 总结,已经成为他们一样常见的 事情 。写自...