📄 text1.c
字号:
#include <reg51.h>
#include<stdio.h>
Uart_Init();
sbit P10=0x90;
sbit P11=0x91;
sbit P12=0x92;
sbit P13=0x93;
bit Change_Flag;
void Update_LED();
xdata int nCounter=0;
xdata int nIndex=0;
xdata int nDataToDisplay=0;
char Table[10]={0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90};
main()
{ Uart_Init();
TH0=0x3C; /* 计数初值写入TH0 */
TL0=0xAF; /* 写入计数初值到TL0 */
ET0=1; /* 定时器0中断允许*/
EA=1; /* 全局中断允许 */
TF0=0; /* 定时器0中断标志位清0 */
TR0=1; /* 定时器0准备开始 */
P10=1;
Change_Flag=0;
nCounter=0;
while(1)
{ if(Change_Flag==1)
{Update_LED();
if(nDataToDisplay>9999) nDataToDisplay=0;
printf("counter refreshed %d \n",nDataToDisplay);
}
}
}
void Timer0_Overflow() interrupt 1 using 0
{ TH0=0x3C; /* 计数初值写入TH0 */
TL0=0xAF; /* 写入计数初值到TL0 */
if(nCounter==20)
{nCounter=0;
nDataToDisplay++;
Change_Flag=1;
/* 计数时间到1s计数值加1 */
}
nCounter++;
}
Uart_Init()
{SCON = 0x52; /* 设置串行口控制寄存器SCON*/
TMOD = 0x21; /* 12M时钟时波特率为2400 */
TCON = 0x69; /* TCON */
TH1 = 0xf3; /* TH1 */
}
void Update_LED()
{ int nTemp;
nTemp=nDataToDisplay;
P13=0;
nIndex=nTemp%10;
SBUF=Table[nIndex];
P13=1;
// while(!TI); /* 等待发送完毕 */
// TI=0;
nTemp/=10;
P12=0;
nIndex=nTemp%10;
SBUF=Table[nIndex];
P12=1;
// while(!TI);/* 等待发送完毕 */
// TI=0;
nTemp/=10;
P11=0;
nIndex=nTemp%10;
SBUF=Table[nIndex];
P11=1;
// while(!TI);/* 等待发送完毕 */
// TI=0;
nTemp/=10;
P10=0;
nIndex=nTemp%10;
SBUF=Table[nIndex];
P10=1;
Change_Flag=0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -