📄 main.c
字号:
#include <AT89X52.H>
#include <stdlib.h>
#include <String.h>
#include <intrins.h>
#define fosc 11059200
#define baud 9600
unsigned char Dly,Dp;
unsigned char temp = 0;
idata SerialBuf[40];
bit SerialRecvFlag;
idata char SerialRecvCnt;
void initial (void);
unsigned char test = 0;
void main(void)
{
unsigned int i;
ET0 = 1; //定时器 0 开中断
EX0 = 1;
TL0=0x00;
TH0=0xB8;
initial();
TR0 = 1;
ES=1;
EA=1;
Dly = 1;
test = 0;
while(1)
{
if (test == 1)
{
test = 0;
///? P3_3 = ~P3_3;
P3_4 = ~P3_4;
///? for (i = 0; i<1000 ; i++);
}
}
}
void time0(void) interrupt 1 using 2
{
//? TH0 = 0x70;
//? Dp = 1;
}
void initial (void)
{
// T2CON = 0X30; // RCLK, TCLK = 1 1 ,强迫定时器2做波特率产生器
SCON = 0X50;
PCON = 0;
//RCAP2L = (65536-(fosc/32/baud))%256; //;TL2 默认波特率为 115200
//RCAP2H = (65536-(fosc/32/baud))/256; //;TL2 默认波特率为 115200
//TR2 = 1;
//TL1 = 0XFD;
//TH1 = 0XFD;
TMOD = 0X21;
TH1 = 256-fosc/32/12/baud;
TL1 = 256-fosc/32/12/baud;
TR1 = 1;
// 清除接收缓存区
//for(tmp=0;tmp<sizeof(SerialBuf);tmp++) SerialBuf[tmp] = 0;
memset(SerialBuf,0,sizeof(SerialBuf));
SerialRecvCnt=0;
SerialRecvFlag=0;
}
/****************************/
/* 函数名: Serial_Interrupt */
/* 参 数: 无 */
/* 返回值: 无 */
/* 功 能: 串口中断 */
/****************************/
void Serial_Interrupt(void) interrupt 4 using 1
{
if (RI)
{
RI =0;
if(SBUF==0x10)
{
test = 1;
SBUF = 0x0B;
///? while(!TI);
///? TI = 0;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -