📄 ex8-4.c
字号:
#include "stc12c5a.h" //包含STC12C5A60S2寄存器定义文件
#include "intrins.h"
#define RELOAD_COUNT 0xfb //18.432MHz,12T,SMOD=0,9600bps
sbit MCU_Start_Led = P1^4;
unsigned char array[9]={0,2,4,6,8,10,12,14,16};
void UART_send(unsigned char i);
void delay(void);
void display_MCU_Start_Led(void);
void main(void)
{
unsigned char i;
//串口初始化
SCON = 0x50; //0101,0000 8位可变波特率,无奇偶校验位
BRT = RELOAD_COUNT;
AUXR = 0x11; // BRTR = 1,启动独立波特率发生器
// S1BRS = 1,串口1选择独立波特率发生器作为波特率发生器
ES = 1; //允许串口中断
EA = 1; //开总中断
display_MCU_Start_Led(); //点亮发光二极管表示单片机开始工作
UART_send(0x34); //串口发送数据表示单片机串口正常工作
UART_send(0xa7); //串口发送数据表示单片机串口正常工作
for(i = 0;i<9;i++)
UART_send(array[i]);
while(1);
}
void UART_send(unsigned char i)
{
ES = 0; //关串口中断
TI = 0; //清零串口发送完成中断请求标志
SBUF = i;
while(TI ==0); //等待发送完成
TI = 0; //清零串口发送完成中断请求标志
ES = 1; //允许串口中断
}
void delay(void)
{
unsigned int g,j;
for(j=0;j<5;j++)
{
for(g=0;g<50000;g++)
{
_nop_();
_nop_();
_nop_();
}
}
}
void display_MCU_Start_Led(void)
{
unsigned char i;
for(i=0;i<5;i++)
{
MCU_Start_Led = 0; //点亮MCU开始工作指示灯
delay();
MCU_Start_Led = 1; //熄灭MCU开始工作指示灯
delay();
}
}
void UART_Receive(void) interrupt 4
{
unsigned char k;
if(RI==1)
{
RI=0;
k=SBUF;
UART_send(k+1);
}
else
TI=0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -