标题:
单片机代码寻求注释,新学看不懂,求指教
[打印本页]
作者:
51小黑子
时间:
2022-11-18 15:42
标题:
单片机代码寻求注释,新学看不懂,求指教
#include<reg51.h>
unsigned charnum[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
//定义一个数组,来表示数码管对应的数字
unsigned charhour=12,minute=0,second=0;a=0;
int time=8000; //定义定时时间
void clockl()interrupt 1 //中断处理程序
{
static unsigned char i=0;
TH0=(65536-time)/256; //重新载入T0的初值
TL0=(65536-time)%256; //重新载入T0的初值
a++;
if(a==125) //如果进行了125次中断
{
a=0;
second++;
if(second==60)
{
second=0;
minute++;
if(minute==60)
{
minute=0;
hour++;
if(hour==24)
hour=0;
}
}
}
switch(i)
{
case 0:P2=0x08;P0=num[hour/10];i++;break;
case 1:P2=0x09;P0=num[hour%10];i++;break;
case 2:P2=0x0a;P0=num[minute/10];i++;break;
case 3:P2=0x0b;P0=num[minute%10];i++;break;
case 4:P2=0x0c;P0=num[second/10];i++;break;
case 5:P2=0x0d;P0=num[second%10];i=0;break;
}
}
void main()
{
TMOD=0X01; //工作方式寄存器T1不工作处于模式0的状态下T0工作处于模式1的状态下
TH0=(65536-time)/256; //高八位的值 载入初值
TL0=(65536-time)%256; //低八位的值
TR0=1; //打开定时器的管脚
EA=1; // 把总开关闭合
ET0=1; //允许中断发生 打开中断T0
while(1); //两个都打开允许输出信号 等待中断
}
复制代码
作者:
51hei**1140
时间:
2022-11-18 20:12
定时器时钟,先弄明白原理,然后逐句的去理解吧
作者:
啤酒瓶子老大
时间:
2022-11-20 01:04
void clockl()interrupt 1 //中断处理程序
{
static unsigned char i=0; 创建一个静态变量i
TH0=(65536-time)/256; //重新载入T0的初值 中断的初始值
TL0=(65536-time)%256; //重新载入T0的初值
a++; a+1
if(a==125) //如果进行了125次中断 如果a=125
{ 那么
a=0;
second++; 秒加1
if(second==60) 如果秒=60
{ 那么
second=0; 秒=0
minute++; 分+1
if(minute==60) 如果分=60
{ 那么
minute=0; 分=0
hour++; 小时+1
if(hour==24) 如果小时=24
hour=0; 那么小时=0
}
}
}
switch(i) 下面是刷新数码管的6位。
{
case 0:P2=0x08;P0=num[hour/10];i++;break; 开始i=0运行这行给数码管的断码引脚和位码引脚送数据,送完了i+1
case 1:P2=0x09;P0=num[hour%10];i++;break; 第二次运行到选择的时候,i=1了,就运行这行
case 2:P2=0x0a;P0=num[minute/10];i++;break; 以下类推
case 3:P2=0x0b;P0=num[minute%10];i++;break;
case 4:P2=0x0c;P0=num[second/10];i++;break;
case 5:P2=0x0d;P0=num[second%10];i=0;break;
}
}
也不知道准确不准确,反正我是这么理解的。
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1