/*开天斧3 通讯程序测试 2024 6 9 L134 CODE424**/#include REG52.H#include intrins.H#include stdio.h#define uint unsigned int#define uchar unsigned char#define CMD_IDLE 0 //空闲模式#define CMD_READ 1 //IAP字节读命令#define CMD_PROGRAM 2 //IAP字节编程命令#define CMD_ERASE 3 //IAP扇区擦除命令#define ENABLE_IAP 0x82 //if SYSCLK20MHz#define IAP_ADDRESS 0x0000 //EEPROM首地址uint xdata tab[300];typedef unsigned char BYTE;typedef unsigned int WORD;uchar kcounter,kstatus; //按键计数标志 按键状态标志sbit OUT1P2^0; /****输出***/sbit OUT2P2^1;sbit OUT3P2^2;sbit OUT4P2^3;uchar i,s; //串口接收计数器sbit KEY_ADDP3^5;sbit KEY_DECP3^4;sbit KEY_SETP3^3;sbit KEY_ENTERP3^2;sbit INTPUTP1^2;uchar DAT20;bit Receive_Flag;/*---------------延时子程序----------------*/void delay1 (uint ms){uint i,j;for(i0;ims;i)for(j0;j200;j);}/******************************************/void key_reset(){kcounter0; //计数器归零kstatus0; //状态计数器归零delay1(5);}/******************************************/void Key_ValAdd(){kcounter; //按键计数器加一kstatus; //按键状态标志加一delay1(5);}/******************************************/void Key_Clear(){kcounter; //按键计数器加一kstatus0; //按键状态标志归零}/*------------初始化串口---------------------*/void InitUart(){SCON0X50; //8位数据可变波特率AUXR|0x01; //串口1选择定时器2为波特率发生器AUXR|0X04; //定时器2时钟为Fosc即1TT2L0XE0; //设置定时器处置 110592》9600T2H0XFE; //设置定时器处置 110592》9600AUXR|0X10; //启动定时器2TI1;EA1;}/*--------UART 中断服务程序----BuffSBUF---------------*/void Uart() interrupt 4 using 1{if(RI){Receive_Flag1;tab[i]SBUF; //数组下标位置的数据等于SBUFRI0; //i;}}/************************************/void Send(uchar temp){unsigned serial;serialtemp;SBUF(uchar)temp;while(TI!1);TI0;}/*------------------主循环程序----------------*/void main( ) /*主程序开始*/{ /**加一**/P0M0 0x00;P0M1 0x00;P1M0 0x00;P1M1 0x00;P2M0 0x00;P2M1 0x00;P3M0 0x00;P3M1 0x00;P4M0 0x00;P4M1 0x00;P5M0 0x00;P5M1 0x00;AUXR0X80; //STC系列的1T 设置TMOD0X01;InitUart(); //初始化串口ES1;Receive_Flag0; //接收到数据标志置零P_SW1 0x80; //RXD/P3.0, TXD/P3.1while(1){OUT10;delay1(2000);OUT11;if(Receive_Flag1){OUT40;P_SW1 0x00; //RXD_3/P1.6, TXD_3/P1.7delay1(200);for(s0;si;s){Send(tab[s]);}Receive_Flag0;i0;delay1(2000);OUT41;P_SW1 0x80; //RXD/P3.0, TXD/P3.1}////////////////////////////////}}
开天斧3 串口通讯程序测试
发布时间:2026/5/17 23:44:07
/*开天斧3 通讯程序测试 2024 6 9 L134 CODE424**/#include REG52.H#include intrins.H#include stdio.h#define uint unsigned int#define uchar unsigned char#define CMD_IDLE 0 //空闲模式#define CMD_READ 1 //IAP字节读命令#define CMD_PROGRAM 2 //IAP字节编程命令#define CMD_ERASE 3 //IAP扇区擦除命令#define ENABLE_IAP 0x82 //if SYSCLK20MHz#define IAP_ADDRESS 0x0000 //EEPROM首地址uint xdata tab[300];typedef unsigned char BYTE;typedef unsigned int WORD;uchar kcounter,kstatus; //按键计数标志 按键状态标志sbit OUT1P2^0; /****输出***/sbit OUT2P2^1;sbit OUT3P2^2;sbit OUT4P2^3;uchar i,s; //串口接收计数器sbit KEY_ADDP3^5;sbit KEY_DECP3^4;sbit KEY_SETP3^3;sbit KEY_ENTERP3^2;sbit INTPUTP1^2;uchar DAT20;bit Receive_Flag;/*---------------延时子程序----------------*/void delay1 (uint ms){uint i,j;for(i0;ims;i)for(j0;j200;j);}/******************************************/void key_reset(){kcounter0; //计数器归零kstatus0; //状态计数器归零delay1(5);}/******************************************/void Key_ValAdd(){kcounter; //按键计数器加一kstatus; //按键状态标志加一delay1(5);}/******************************************/void Key_Clear(){kcounter; //按键计数器加一kstatus0; //按键状态标志归零}/*------------初始化串口---------------------*/void InitUart(){SCON0X50; //8位数据可变波特率AUXR|0x01; //串口1选择定时器2为波特率发生器AUXR|0X04; //定时器2时钟为Fosc即1TT2L0XE0; //设置定时器处置 110592》9600T2H0XFE; //设置定时器处置 110592》9600AUXR|0X10; //启动定时器2TI1;EA1;}/*--------UART 中断服务程序----BuffSBUF---------------*/void Uart() interrupt 4 using 1{if(RI){Receive_Flag1;tab[i]SBUF; //数组下标位置的数据等于SBUFRI0; //i;}}/************************************/void Send(uchar temp){unsigned serial;serialtemp;SBUF(uchar)temp;while(TI!1);TI0;}/*------------------主循环程序----------------*/void main( ) /*主程序开始*/{ /**加一**/P0M0 0x00;P0M1 0x00;P1M0 0x00;P1M1 0x00;P2M0 0x00;P2M1 0x00;P3M0 0x00;P3M1 0x00;P4M0 0x00;P4M1 0x00;P5M0 0x00;P5M1 0x00;AUXR0X80; //STC系列的1T 设置TMOD0X01;InitUart(); //初始化串口ES1;Receive_Flag0; //接收到数据标志置零P_SW1 0x80; //RXD/P3.0, TXD/P3.1while(1){OUT10;delay1(2000);OUT11;if(Receive_Flag1){OUT40;P_SW1 0x00; //RXD_3/P1.6, TXD_3/P1.7delay1(200);for(s0;si;s){Send(tab[s]);}Receive_Flag0;i0;delay1(2000);OUT41;P_SW1 0x80; //RXD/P3.0, TXD/P3.1}////////////////////////////////}}