【51单片机先流水2秒后数码显示2秒后显示END】2022-9-5
缘由大一新生求解,救救孩子吧-嵌入式-CSDN问答
#include "REG52.h"
sbit BEEP=P2^5;
unsigned char Js=0;
unsigned char code SmZiFu[]={63,6,91,79,102,109,125,7,127,111,121,55,94,0};//0-9END消隐.
void smxs(unsigned char mz, unsigned char w)
{unsigned char Xd=0;P0=255;P0=255-SmZiFu[mz];P2=w;while(++Xd);
}
void ZhongDuanSheZhi()
{TH0+=(65536-9216)/256;/*定时器赋初值,定时10ms触发中断,自动补偿方式*/TL0+=(65536-9216)%256;//12M晶振改为65536-10000TMOD=0X01;//16位定时器/计数器ET0=TR0=1; //启动定时器T0开启定时器。EA=1; //全局中断开关
}
void main()
{unsigned char p=0;unsigned long sm=123456,s=256;ZhongDuanSheZhi();P1=s;while(1){if(p==0)P1=~s;else if(p>1&&p<4){smxs(sm/100000,1);smxs(sm/10000%10,2);smxs(sm/1000%10,4);smxs(sm/100%10,8);
// smxs(sm/10%10,16);//电路以4位数码管为例
// smxs(sm%10,32);}else if(p==4){smxs(13,1);smxs(10,2);smxs(11,4);smxs(12,8);}if(s>1&&Js==50){s/=2;Js=0;}else if(Js==100)//秒{if(++p==4)TR0=0;Js=0;}}
}
void ZhongDuan() interrupt 1
{++Js;TH0+=(65536-9216)/256;TL0+=(65536-9216)%256;
}