欢迎来到天天文库
浏览记录
ID:55770845
大小:17.74 KB
页数:2页
时间:2020-06-03
《单片机定时器计数器应用.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、#defineLEDLen3#includesbitP1_0=P1^0;dataunsignedcharm=10;//m用于定时器dataunsignedchara;//定时器开关dataunsignedcharb;//计数器开关dataunsignedcharg,s,h;//i的个十百位dataunsignedcharL=0;//i表示脉冲的累计数xdataunsignedcharOUTBIT_at_0x8002;//位控制口xdataunsignedcharOUTSEG_at_0x8004;//段控制口xdataunsignedcharIN_a
2、t_0x8001;//键盘读入口unsignedcharLEDBuf[LEDLen];//显示缓冲codeunsignedcharLEDMAP[]={//八段管显示码0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};voidDisplayLED(){unsignedchari=0;unsignedcharPos;unsignedcharLED;Pos=0x20;//从左边开始显示for(i=0;i3、LED=LEDBuf[i];OUTSEG=LED;TH1=0xff;TL1=0xff;OUTBIT=Pos;//显示一位八段管Pos>>=1;//显示下一位}OUTBIT=0;//关所有八段管}voidmain(){TMOD=0x51;//高位5表示其中一个中断为计数器模式,1表示中断为计数器模式TH0=0x0c;//中断0,定时器初值TL0=0xb0;TH1=0xff;//中断1,计数器初值TL1=0xff;P1=0xff;EA=1//中断总开关ET0=1;//允许中断T0ET1=1;//允许中断T1TR0=0;//中断0不打开TR1=0;//中断1不打开whil4、e(1){P1=P15、0x06;//单片机P1口在读取外部信号时,先要出一a=P1&0x02;//a为P1^1读到的开关信号(高电平表示开关打开,低关)b=P1&0x04;//b为P1^2if(a)//如果a为高电平,打开T0中断{TR0=1;}else{TR0=0}if(b)//如果b为高电平,打开T1中断{TR1=1;}else{TR1=0}LEDBuf[0]=LEDMAP[g&0x0f];//取i的个位LEDBuf[1]=LEDMAP[s&0x0f];//取i的十位LEDBuf[2]=LEDMAP[h&0x0f];//取i的百位DisplayLED();}}v6、oidtimer()interrupt1//实验5定时器{TH0=0x0c;TL0=0xb0;m--;if(m==0){P1_0=!P1_0;m=10;}}voidjishu()interrupt3//每一脉冲,进入计数中断{L++;//L表示脉冲个数加一g=L%100;//L的个位s=(L%10)/10;//L的十位h=L/100;//L的百位if(L>256)//如果L大于256,重新赋L值为0{L=0;}TH1=0xff;TL1=0xff;}
3、LED=LEDBuf[i];OUTSEG=LED;TH1=0xff;TL1=0xff;OUTBIT=Pos;//显示一位八段管Pos>>=1;//显示下一位}OUTBIT=0;//关所有八段管}voidmain(){TMOD=0x51;//高位5表示其中一个中断为计数器模式,1表示中断为计数器模式TH0=0x0c;//中断0,定时器初值TL0=0xb0;TH1=0xff;//中断1,计数器初值TL1=0xff;P1=0xff;EA=1//中断总开关ET0=1;//允许中断T0ET1=1;//允许中断T1TR0=0;//中断0不打开TR1=0;//中断1不打开whil
4、e(1){P1=P1
5、0x06;//单片机P1口在读取外部信号时,先要出一a=P1&0x02;//a为P1^1读到的开关信号(高电平表示开关打开,低关)b=P1&0x04;//b为P1^2if(a)//如果a为高电平,打开T0中断{TR0=1;}else{TR0=0}if(b)//如果b为高电平,打开T1中断{TR1=1;}else{TR1=0}LEDBuf[0]=LEDMAP[g&0x0f];//取i的个位LEDBuf[1]=LEDMAP[s&0x0f];//取i的十位LEDBuf[2]=LEDMAP[h&0x0f];//取i的百位DisplayLED();}}v
6、oidtimer()interrupt1//实验5定时器{TH0=0x0c;TL0=0xb0;m--;if(m==0){P1_0=!P1_0;m=10;}}voidjishu()interrupt3//每一脉冲,进入计数中断{L++;//L表示脉冲个数加一g=L%100;//L的个位s=(L%10)/10;//L的十位h=L/100;//L的百位if(L>256)//如果L大于256,重新赋L值为0{L=0;}TH1=0xff;TL1=0xff;}
此文档下载收益归作者所有