一小段单片机 时钟电路 程序分析

来源:百度知道 编辑:UC知道 时间:2024/06/17 04:35:09
void main(void)
{
uchar stabak; /*上一次程序运行的状态*/
P1=0x0f;
EA=1; IT1=1; ET0=1;

TMOD=0x61; /*T1方式2计数,T0方式1计时*/
TH0=-5000/256; TL0=-5000%256;
TH1=0xff; TL1=0xff;
T2CON=0; TH2=-5000/256; TL2=-5000%256;

K0=1; K1=1; K2=1;
STATE=P1&0x07;
stabak=STATE;

for (;;)
{
switch (STATE)
{
case 0: /*STATE=0,秒表*/
{
EX1=0; ET1=1; ET2=1; TR1=1; SND=1;
L1=1; L0=0; L2=0;
SECOND[0]=0;
SECOND[1]=0;
} break;

case 1: /*STATE=1,倒计时分调整*/
{
EX1=0; ET1=1; ET2=1; TR1=1; TR2=0;
L2=1; L0=0; L1=0;
REVERSE[0]=0;
REVERSE[1]=0;
} break;

case 2: /*STATE=2,倒计时小时调整*/
{
EX1=0; ET1=1; ET2=1; TR1=1; TR2=0;
L2=1; L0=0; L1=0;
REVERSE[0]=0;
REVERSE[1]=0;
} break;

case 3: /*STATE=3,倒计时运行*/

没看太明白!感觉应该是一个时钟按键的扫描程序!前面的switch应该是扫描是否有按键被按下,并且置相应的标志位!后面的while语句可能是查询标志位然后相应按键!这可能是为了增加按键的多重更能吧!

呵呵!也不知道是不是这样!期待答案!