int SEG_Code[10]={0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6}; unsigned int aa; sbit SDA=P1^0; sbit CLK=P1^1; unsigned int miao; void SMG_JT_Init(unsigned int miao) { unsigned char da,i; da=SEG_Code[0]; for(i=0;i<8;i++) { CLK=0; SDA=da&0x01; CLK=1; da=da>>1; } da=SEG_Code[miao]; for(i=0;i<8;i++) { CLK=0; SDA=da&0x01; CLK=1; da=da>>1; } } void main() { System_Init(); P1_Mode_OUT_PP(0xf3); Timer0Init(); while(1) { if(aa==1) { aa=0; SMG_JT_Init(miao); } } } void Timer0_Poutine() interrupt 1 { static unsigned int T0Count; TL0=15536%256; TH0=15536/256; T0Count++; if(T0Count>=40) { T0Count=0; miao++; aa=1; if(miao==10) { miao=0; } } }给每一行代码写上注释
时间: 2024-03-09 08:48:56 浏览: 26
以下是每一行代码的注释:
```C
int SEG_Code[10]={0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6}; // 数码管显示0~9的编码,用于后面的显示
unsigned int aa; // 定义一个标志位
sbit SDA=P1^0; // 定义单片机的SDA管脚
sbit CLK=P1^1; // 定义单片机的CLK管脚
unsigned int miao; // 定义秒数
void SMG_JT_Init(unsigned int miao) { // 数码管显示函数
unsigned char da,i; // 定义变量da和i
da=SEG_Code[0]; // 将da初始化为0显示的编码
for(i=0;i<8;i++) { // 循环8次,控制8位数码管的显示
CLK=0; // CLK管脚置0
SDA=da&0x01; // 将da的最低位(即二进制的个位)赋给SDA
CLK=1; // CLK管脚置1
da=da>>1; // 将da右移一位,相当于除以2
}
da=SEG_Code[miao]; // 将da设置为当前秒数对应的编码
for(i=0;i<8;i++) { // 循环8次,控制8位数码管的显示
CLK=0; // CLK管脚置0
SDA=da&0x01; // 将da的最低位(即二进制的个位)赋给SDA
CLK=1; // CLK管脚置1
da=da>>1; // 将da右移一位,相当于除以2
}
}
void main() {
System_Init(); // 系统初始化
P1_Mode_OUT_PP(0xf3); // 将P1.0和P1.1设置为输出模式
Timer0Init(); // 定时器初始化
while(1) { // 进入循环
if(aa==1) { // 如果标志位为1
aa=0; // 将标志位清零
SMG_JT_Init(miao); // 进行数码管显示
}
}
}
void Timer0_Poutine() interrupt 1 { // 定时器中断函数
static unsigned int T0Count; // 定义静态变量T0Count
TL0=15536%256; // 设置定时器0的低8位
TH0=15536/256; // 设置定时器0的高8位
T0Count++; // T0Count自增
if(T0Count>=40) { // 每1秒钟执行一次下面的语句
T0Count=0; // 将T0Count清零
miao++; // 秒数自增
aa=1; // 设置标志位为1
if(miao==10) { // 如果秒数达到10,则将秒数清零
miao=0;
}
}
}
```