?/**************************************************************************?*标题:多位数码管动态显示定时器中断实现(C51)?*作者:wentaohttp://blog.?http://wentao.?*日期:?*软件:?*芯片:AT89X51?*说明:实验板实测通过,数码管为8位共阳?*声明:自用存档!另仅供需要的朋友参考,请勿用做不道德转载及商业用途!?**************************************************************************/??#include<>?#include<>??#defineucharunsignedchar??ucharcodedis_code[16]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,//段码表?//01234567//对应内容?0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};?//89abcdef???uchardatai=0x00;//循环控制变量兼偏移量,初值为0?uchardataj=0xfe;//位码(选通各位数码管),初值为11111110??voidmain()?{?P2=0xff;//关所有数码管??TMOD=0x01;//定时/计数器0工作于方式1?TH0=0xfc;//装载定时常数64536(fc18)?TL0=0x18;?EA=1;//开总中断?ET0=1;//定时/计数器0允许中断?TR0=1;//启动定时/计数器0?while(1);//执行主程序,等待中断?}??voidtime0(void)interrupt1//T/C0中断服务程序(延时1ms)?{?P2=j;//位码送入P2口显示?P0=dis_code[i];//段码表中取值送P0口?j=_crol_(j,1);//位码循环左移1位选通下一数码管?i++;//偏移量加1取下一段码(循环控制加1)?i&=0x07;//偏量增到8时自动归0(控制在0~7之间循环)??TH0=0xfc;//重新装载定时常数?TL0=0x18;?}
多位数码管动态显示定时器中断实现 来自淘豆网www.taodocs.com转载请标明出处.