单片机中断实现按键

单片机中断实现按键
单片机中断实现按键

#include<>

#include<>

#define uint unsigned int

#define uchar unsigned char

sbit duoj=P0^0;

sbit key=P1^0;

uchar duojcount,degree;

void main()

{

TMOD=0x01; {

degree++; {

SendStr("1");

P2 = 0xfe;

Delay_ms(240);

}

}

}

}

}

// 发送一个字节

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,无奇偶校验

晶振,发送和接收使用的格式相同,如都使用

字符型格式,按复位重启程序,可以看到接收到 UART test,技术论坛:请在发送区输入任意信

然后在发送区发送任意信息,接收区返回同样信息,表明串口收发无误

#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 波特率晶振

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; //定义临时变量

if(RI) //判断是接收中断产生

{

RI=0; //标志位清零

Temp=SBUF; //读入缓冲区的值

P2=Temp; //把值输出到P1口,用于观察 SBUF=Temp; //把接收到的值再发回电脑端 }

if(TI) //如果是发送标志位,清零

TI=0;

}

相关主题
相关文档
最新文档