当前位置:首页 > STC89C52单片机的一些程序,包括串口通信,定时中断
针对STC89C52RC单片机的一些程序 基本串口通信程序: #include
#define uint unsigned int #define uchar unsigned char
#define SEND 0 #define RECEIVE 1
uchar flag_Serial = SEND; uchar Rx_Buf;
sbit SMG = P1^7;
//0 1 2 3 4 5 6 7 8 9 a b c d e f
uchar code Show[16]={0x03,0x9f,0x25,0x0d,0x99,0x49, 0x41,0x1f,0x01,0x19,0x11, 0xc1,0x63,0x85,0x61,0x71};
void Serial_Init(); void Serial_send(); void Display();
void Delay_1ms(uchar z);
/****************************************************/ //main function //
/****************************************************/ void main() {
Serial_Init(); while(1) { switch(flag_Serial) { case SEND: flag_Serial = RECEIVE; Serial_send(); break; case RECEIVE: Display(); break; } }
}
/****************************************************/ //serial initial //
/****************************************************/ void Serial_Init() { TMOD = 0X20; //work in mode 2 PCON = 0X00; SCON = 0X50; TH1 = 0XFD; //BRUD 9600 TL1 = 0XFD; TR1 = 1; //open interrupt 1 ES = 1; //open the serial EA = 1; //open the key interrupt flag_Serial = SEND; SMG = 0; }
/****************************************************/ //serial interrupt function //
/****************************************************/ void Serial() interrupt 4 using 2 { EA = 0; if(RI!=0&&flag_Serial==RECEIVE) { RI = 0; Rx_Buf = SBUF; flag_Serial = SEND; } EA = 1; }
/****************************************************/ //mcu send data to serial //
/****************************************************/ void Serial_send() {
SBUF = Rx_Buf; while(TI==0);
TI=0; }
/****************************************************/ //display the data by SMG //
/****************************************************/ void Display() { P2 = Show[Rx_Buf]; Delay_1ms(3); }
/****************************************************/ //delay for z*1ms //
/****************************************************/ void Delay_1ms(uchar z) {
uchar i,j; for(i=z;i>0;i--) for(j=110;j>0;j--); }
串口通信,按键加减
#include
#define uint unsigned int #define uchar unsigned char
#define SEND 0 #define RECEIVE 1
sbit KEY1 = P1^4; sbit KEY2 = P1^5; sbit LED1 = P1^0; sbit LED2 = P1^1; sbit SMG = P1^7;
uchar flag_Serial = SEND; uchar Rx_Buf; uchar Smg_Buf;
//0 1 2 3 4 5 6 7 8 9 a b c d e f
uchar code Show[16]={0x03,0x9f,0x25,0x0d,0x99,0x49,
0x41,0x1f,0x01,0x19,0x11, 0xc1,0x63,0x85,0x61,0x71};
void Serial_Init(); void Serial_send(); void Display();
void Delay_1ms(uchar z); void Scan();
/****************************************************/ //main function //
/****************************************************/ void main() {
Serial_Init(); while(1) { switch(flag_Serial) { case SEND: flag_Serial = RECEIVE; Serial_send(); break; case RECEIVE: Display(); break; } Scan(); } }
/****************************************************/ //serial initial //
/****************************************************/ void Serial_Init() { TMOD = 0X20; //work in mode 2 PCON = 0X00; SCON = 0X50; TH1 = 0XFD; //BRUD 9600 TL1 = 0XFD; TR1 = 1; //open interrupt 1
共分享92篇相关文档