主要用到
EA:中断总控制 1 开启 0关闭
ET0 :定时器0溢出中断 1开启 0关闭
要点:中断号计算
公式:中断向量=8×中断号+3
timer0为例 中断向量=0x0b (11十进制) 中断号=(11-3)/8=1
中断函数:
void timer0_interrupt() interrupt1 //中断号为1
中断优先级可以查书。
数码管动态显示就是用一组io口 显示多个led数码管 扫描频率1~10ms
代码如下:
#includetypedef unsigned char uint8;typedef unsigned int uint16;uint8 flag=0;uint16 i=0;sbit led1=P1^6;sbit led2=P1^7;sbit bee=P1^5;code uint8 ledcode[]={0xC0, // 00xF9, // 10xA4, // 20xB0, // 30x99, // 40x92, // 50x82, // 60xF8, // 70x80, // 80x90, // 90x88, // A0x83, // B0xC6, // C0xA1, // D0x86, // E0x8E // F};uint8 table[]={0,0};void timer0_init(){TMOD|=0x01; //工作模式1TMOD&=0xfd;TH0=0xdc; //初始值 10ms ×100=1sTL0=0x00;TR0=1;}void intr_init(){ET0=1; //timer0中断开启EA=1; //总中断开启}
评论