附录2
主程序
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit KEYON =P2^0; // 开始键
sbit KEYOFF=P2^1; // 关闭键
sbit KEYSET=P2^2; // 预约键
sbit KEYINC=P2^3; //加1键
sbit KEYDEC=P2^4; // 减1键
sbit KEYFREE=P2^5; //预留键
sbit POWER=P3^6; //电源开关指示灯
sbit LED=P3^3 ; //按键指示灯
uchar code dispcode[]={0x3f,0x06,0x05b,0x4f,0x66,
0x6d,0x7d,0x07,0x7f,0x6f,0x40}; //0-9的字型码
uchar data disbuf[]={0,0,0,0}; //显示缓冲区
uchar hour,min ; //小时、分变量
bit Onflag,flag;
uchar Setflag;
void delay(uchar); //延时子函数
void init(void); //定时器初始化子函数
uchar GetKeyNum(); //求按键号
void Keyprocess(uchar); //按键处理子函数
新年短信大全void calculate(); //计时子函数
void display(); //显示子函数
//--------------------主函数-------------------------
void main(void)
{
init();
P1=0x00;
while(1)
display();
}
//-------------定时器TO、T1初始化,外部中断0初始化子函数-----
我只在乎你 歌词void init()
{
TMOD=0x11; //TO、T1作定时器、工作方式1
TH0=(65536-50000)/256 ; //定时50ms
TL0=(65536-50000)%256;
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
IT0=1; //选择外部中断0为下降沿触发方式
EX0=1; //开外部中断0
ET1=1; //开定时器1
ET0=1; //开定时器0
EA =1; //开总中断
TR0=1;
}
小敏家的人物关系图 //----------显示子函数--------------------------
void display()
{
uchar i,j=0x08;
if((Setflag==0)&&!(min|hour)) //数码管显示“- - - -”
{
for(i=0;i<4;i++) disbuf[i]=dispcode[10];
}
else // 正常显示时间
{
disbuf[0] = dispcode[min%10]; //分个位
disbuf[1] = dispcode[min/10]; //分十位
disbuf[2] = dispcode[hour%10]+0x80; //小时个位
disbuf[3] = dispcode[hour/10]; //小时十位
}
if((Setflag!=0)&flag) //如果调时,数码管闪烁显示
{
着多音字组词和拼音 for(i=0;i<4;i++)
{
if((disbuf[i]==0x3f)&&(i>2)) //不显示前面的0
P0=0;
else
P0=disbuf[i];
if(Setflag==1) P1=j&0xfc; //调时,关断前两位位码
else P1=j & 0xf3; //调分,关断后两位位码
delay(5); //延时2.5ms
卫生洁具十大品牌 P1=0x00;
j=j>>1;
}
}
else //数码管正常显示
{
for(i=0;i<4;i++)
{
if((disbuf[i]==0x3f)&&(i>2)) P0=0; //不显示前面的0
else P0=disbuf[i];
P1=j; //位选通
delay(5); //延时2.5ms
P1=0X00;
j=j>>1;
}
}
}
//--------------外部中断0中断函数---------------------------------
void int0()interrupt 0 using 0
{
港澳通行证网上办理 uchar keynum;
display(); //动态显示程序作为去抖动
if(INT0==0) //判断是否有按键按下
{
keynum=GetKeyNum(); //有效键,获取键值
while(INT0==0); //等待按键释放
Keyprocess(keynum); //按键处理
}
}
//-----------------定时器0中断子函数----------------------------
void time0() interrupt 1 //处理调时、显示器闪烁
{
static uchar ledcnt,num; //设置静态变量
TH0=(65536-50000)/256; //定时50ms
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论