JP3接P0口。
#include<reg51.h>
#define uchar unsigned char
uchar flag,num;
uchar code smg[10] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
//声明子函数
void init();
void initTimer0();
void main()
{
init();
initTimer0();
while(1)
{
//一句代码都没有
}
}
void timer0() interrupt 1
{
//重新装初值,因为要循环定时,定时50毫秒
TH0 = (65536-50000)/256;
TL0 = (65536-50000)%256;
flag++;
if(flag == 20)
{
//每隔一秒数值加1
flag = 0;
P0 = smg[num];
num++;
if(num == 10)
{
num = 0;
}
}
}
void initTimer0()
{
//装初值,定时50毫秒
TH0 = (65536-50000)/256;
TL0 = (65536-50000)%256;
//选择定时器T0方式1
TMOD = 0x01;
//开中断允许位
ET0 = 1;
//开CPU总中断
EA = 1;
//启动定时器
TR0 = 1;
}
void init()
{
flag = 0;
num = 0;
}两个定时器的使用方式相同,现在就总结一下定时器的使用步骤:
1、装初值
2、确定工作方式,相关的寄存器是TMOD
3、开中断允许ET0或者ET1,,和EA
4、启动定时器
5、写中断服务程序
void 函数名() interrupt 1(如果选择定时器1,代号就是3)
{
//重新装初值
}
原文地址:http://blog.csdn.net/kotei_88_luluc_66/article/details/40210947