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