单片机中断实现按键_第1页
单片机中断实现按键_第2页
单片机中断实现按键_第3页
单片机中断实现按键_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、.#include#include#define uint unsigned int #define uchar unsigned charsbit duoj=P00;sbit key=P10;uchar duojcount,degree;void main() TMOD=0x01; /定时器T0 工作方式1 0000 0001 16位TimerTH0=(65536-55)/256; / T=20ms TL0=(65536-55)%256; /定时器周期55us理论值55*250=13.75ms实际值:18.76msEA=1;ET0=1;TR0=1;duoj=1;degree=10;key=1

2、;while(1)if(!key) /如果检测到低电平,说明按键按下 Delay_ms(10); /延时去抖,一般10-20ms if(!key) /再次确认按键是否按下,没有按下则退出 while(!key); /如果确认按下按键等待按键释放,没有释放则一直等待. degree+; /加操作 if(degree240) degree=10; void timer0() interrupt 1duojcount+;if(duojcount=degree)duoj=0;if(duojcount=250)duojcount=0;duoj=1;TH0=(65536-55)/256;/重装初值TL0=

3、(65536-55)%256;ORG 00HSTART:MOV A,#0FFH ;赋初值 1111 1111 CLR C MOV R2,#8 LOOP: RLC A ; 循环左移CY=0 MOV P2,A CALL DELAY DJNZ R2,LOOP JMP START DELAY: MOV R3,#30 ; 延时0.3秒D1: MOV R4,#20 ;1usD2: MOV R5,#248 ;1usD3: DJNZ R5,D3 ;DJNZ R5,$ ;248*2+1=497us DJNZ R4,D2 ;(497+2)*20+1=9998us DJNZ R3,D1 ;(9998+2)*10+1

4、=10ms*30=300ms=0.3s RET END将波特率设置为9600,无奇偶校验晶振11.0592MHz-*/#include #define uint unsigned int #define uchar unsigned charsbit key1=P10; /左void SendStr(unsigned char *s);/-串口初始化-*/void InitUART (void) SCON = 0x50; / SCON: 模式 1, 8-bit UART, 使能接收 TMOD |= 0x20; / TMOD: timer 1, mode 2, 8-bit 重装 TH1 = 0x

5、FD; / TH1: 重装值 9600 波特率 晶振 11.0592MHz TR1 = 1; / TR1: timer 1 打开 EA = 1; /打开总中断 /ES = 1; /打开串口中断 void main (void)InitUART();key1=1;while (1) if(!key1) /如果检测到低电平,说明按键按下 Delay_ms(10); /延时去抖,一般10-20ms if(!key1) /再次确认按键是否按下,没有按下则退出 while(!key1);/如果确认按下按键等待按键释放,没有释放则一直等待. SendStr(1);P2 = 0xfe;Delay_ms(24

6、0); / 发送一个字节void SendByte(unsigned char dat) SBUF = dat; while(!TI); TI = 0;/ 发送一个字符串void SendStr(unsigned char *s) while(*s!=0)/ 0 表示字符串结束标志,通过检测是否字符串末尾 SendByte(*s); s+; 内容:连接好串口或者usb转串口至电脑,下载该程序,打开电源 打开串口调试程序,将波特率设置为9600,无奇偶校验 晶振11.0592MHz,发送和接收使用的格式相同,如都使用 字符型格式,按复位重启程序,可以看到接收到 UART test,技术论坛:ww

7、 请在发送区输入任意信然后在发送区发送任意信息,接收区返回同样信息,表明串口收发无误#include /包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义 /*- 函数声明-*/void SendStr(unsigned char *s);/*- 串口初始化-*/void InitUART (void) SCON = 0x50; / SCON: 模式 1, 8-bit UART, 使能接收 TMOD |= 0x20; / TMOD: timer 1, mode 2, 8-bit 重装 TH1 = 0xFD; / TH1: 重装值 9600 波特率 晶振 11

8、.0592MHz TR1 = 1; / TR1: timer 1 打开 EA = 1; /打开总中断 / ES = 1; /打开串口中断 /*- 主函数-*/void main (void)InitUART();SendStr(UART test,技术论坛: 请在发送区输入任意信息);ES = 1; /打开串口中断while (1) /*- 发送一个字节-*/void SendByte(unsigned char dat) SBUF = dat; while(!TI); TI = 0;/*- 发送一个字符串-*/void SendStr(unsigned char *s) while(*s!=0)/ 0 表示字符串结束标志,通过检测是否字符串末尾 SendByte(*s); s+; /*- 串口中断程序-*/void UART_SER (void) interrupt 4 /串行中断服务程序 unsigned char Temp; /定义

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论