📄 main.c
字号:
/********************************************************************
* 文件名 : main.c
* 描述 : 定时器0工作方式3,在外部晶振11.0592MHZ下,精确定时0.2ms,
每隔一秒数码管上的数值加1。
* 创建人 : 符芳壮,2012年6月13日
* 版本号 : 1.0
***********************************************************************/
#include<reg52.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
//数码管的段码编码
uchar code table[16] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
//下一行的数组可以显示数值外,还可以显示数码管的点
uchar code table_d[16] = {0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef,0xf7,0xfc,0xb9,0xde,0xf9,0xf1};
//定义全局变量
uint count;
/**********************************************************
*函数名称:void time0_init(void)
*函数功能:定时器0初始化
*输入 :无
*输出 :无
**********************************************************/
void time0_init(void)
{
TMOD = 0x03; //定时器0工作方式3
TL0 = 0x47; //定时0.2ms
EA =1; //开启总中断
ET0 =1; //开启定时器0中断
TR0 =1; //启动定时器0
}
/**********************************************************
*函数名称:void time0_int(void)
*函数功能:定时器0中断实现count自加
*输入 :无
*输出 :无
**********************************************************/
void time0_int(void) interrupt 1 using 0
{
TL0 = 0x47; //重新装载初值定时0.2ms
count++;
}
void main(void)
{
uint i = 0;
time0_init();
P2 = 0x00;
while(1){
P0 = table[i%16];
if(count==5000){
i++;
count=0;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -