历史上的今天
今天是:2025年08月08日(星期五)
2020年08月08日 | STC15系列单片机RS-485通讯例程(带CRC校验)
2020-08-08 来源:51hei
单片机源程序如下:
#include sbit bitCtrl_485Eable = P1^3;// sbit bitCtrl_485_2Eable = P7^3;// xdata unsigned char mod_comd[9]={0x01,0x04,0x75,0x31,0x02,0x00,0x00,0x08,0x09}; unsigned char freq = 0; /****************************************************************************************/ // unsigned char MyDeviceAddr _at_ 0x06000; // unsigned char PODeviceAddr _at_ 0x05999; unsigned char MyDeviceAddr; unsigned char PODeviceAddr; /********************************* 串口1变量定义 **********************************/ bit busy1 = 0; xdata unsigned char u8Uart1TxBuffer[USART1_TX_BUFFER_SIZE]; xdata unsigned char u8Uart1RxBuffer[USART1_RX_BUFFER_SIZE]; unsigned char u8Rx1Head = 0; unsigned char u8Rx1Tail = 0; unsigned char u8Tx1Head = 0; unsigned char u8Tx1Tail = 0; unsigned char mdbs1_stat = 0; unsigned char mdbs1_len = 0; unsigned char mdbs1_cnt = 0; unsigned char mdbs1_maxlen = 0; xdata unsigned char mdbs1_Rxbuf[16]; xdata unsigned char mdbs1_Txbuf[16]; unsigned char mdbs1_pos = 0; unsigned char mdbs1_timerflag = 0; unsigned char mdbs1_overtime = 0; unsigned char mdbs1_data_len = 0; /****************************************************************************************/ /****************************************************************************************/ /********************************* 串口2变量定义 **********************************/ bit busy2 = 0; xdata unsigned char u8Uart2TxBuffer[USART2_TX_BUFFER_SIZE]; xdata unsigned char u8Uart2RxBuffer[USART2_RX_BUFFER_SIZE]; unsigned char u8Rx2Head = 0; unsigned char u8Rx2Tail = 0; unsigned char u8Tx2Head = 0; unsigned char u8Tx2Tail = 0; unsigned char mdbs2_stat = 0; unsigned char mdbs2_len = 0; unsigned char mdbs2_cnt = 0; unsigned char mdbs2_maxlen = 0; xdata unsigned char mdbs2_Rxbuf[16]; xdata unsigned char mdbs2_Txbuf[16]; unsigned char mdbs2_pos = 0; unsigned char mdbs2_timerflag = 0; unsigned char mdbs2_overtime = 0; unsigned char mdbs2_data_len = 0; /****************************************************************************************/ /*定时器0初始化,采用16位自动重装技术模式*/ void Timer0Init(void) //10毫秒@11.0592MHz //16位重装计数器 { AUXR &= 0x7F; //定时器时钟12T模式 TMOD &= 0xF0; //设置定时器模式 TL0 = -(FOSC/12/100); //设置定时初值 TH0 = -(FOSC/12/100) >> 8; //设置定时初值 // RL_TH0 TF0 = 0; //清除TF0标志 TR0 = 1; //定时器0开始计时 Timer0_InterruptFirst(); ET0 = 1; //enable timer0 interrupt } /***定时器0中断服务函数**/ void tm0_isr() interrupt 1 using 1 { TF0 = 0; //清除TF0标志 TL0 = -(FOSC/12/100); //设置定时初值 TH0 = -(FOSC/12/100) >> 8; //设置定时初值 ++freq; } /************************************************************************/ //8位数据 波特率可变 无奇偶检验位 1位起始位 1位停止位 //使用定时器1作为波特率发生器 void Uart1Init(void) //9600bps@11.0592MHz { PCON &= 0x3F; //波特率不倍速 SCON = 0x50; //8位数据,可变波特率 AUXR &= 0xBF; //定时器1时钟为Fosc/12,即12T 传统51速度 AUXR &= 0xFE; //串口1选择定时器1为波特率发生器 // AUXR |=0X01; //串口1选择定时器2为波特率发生器 TMOD &= 0x0F; //清除定时器1模式位 TMOD |= 0x20; //设定定时器1为8位自动重装方式 // TMOD &= 0xF0; //清除定时器2模式位 // TMOD |= 0x02; //设定定时器2为8位自动重装方式 TL1 = -(FOSC/12/32/BAUD); //设定定时初值 TH1 = -(FOSC/12/32/BAUD); //设定定时器重装值 /***** 定时器2工作方式为固定16位自动重装载 装在值需重新计算 */ // T2L = -(FOSC/12/32/BAUD); //设定定时初值 // T2H = -(FOSC/12/32/BAUD); //设定定时器重装值 ET1 = 0; //禁止定时器1中断 TR1 = 1; //启动定时器1 // S1_USE_P36P37(); //定义串口1管脚 UART1_InterruptFirst(); //中断优先级设定 ES = 1; //???????? bitCtrl_485Eable=0; } /****************** *****************************************************/ /*************串口2初始化************/ /************************************************************************/ //#define S3_Int_en() IE2 |= 8 void Uart2Init(void) //10毫秒@11.0592MHz { /* T2MOD = 0; //初始化模式寄存器 T2CON = 0; //初始化控制寄存器 TL2 = -(FOSC/12/100); //设置定时初值 TH2 = -(FOSC/12/100) >> 8; //设置定时初值 RCAP2L = -(FOSC/12/100); //设置定时重载值 RCAP2H = -(FOSC/12/100) >> 8; //设置定时重载值 TR2 = 1; //定时器2开始计时
史海拾趣
|
今天偶然闲逛到一安全网站,看到内容不错,与大家共勉,虽然咱大多数搞弱电,但是保护身体。 生产过程中发生的大量事故不同程度的来自于设备或设施上的缺陷,这些缺陷可能产生于设备设施的结构、强度、材质等很多方面。当具有设计或施工缺陷的设备 ...… 查看全部问答> |
|
:L :L :L :L 本人一直为怎样区分420线和480线摄像机而烦恼,在网上查了很多的方法,不过都要拆机看蕊片型号的,机被拆了就不保了,所以想找出其它的方法。近日从各位大侠分享的图片中发现420线枪的图像右边有一条从上至 ...… 查看全部问答> |
|
问题是可以Search到AP,但是关联不上,每次连接都失败. OS起来后,debug port输出如下: -OALIntrRequestSysIntr(irq = 21, sysIntr = 27) GetSystemPowerStstusEx2 failed with error 0x1f. -OALIntrRequestSysIntr(irq = 100, sysIntr = 28) -OA ...… 查看全部问答> |
|
我的开发环境是VS2008+SQLite3,原以为window mobile6.0是支持sqlite的,结果做了例子,一直报错说error LNK2019: 无法解析的外部符号 sqlite3_open... 最初看sqlite介绍的时候说是支持智能手机的windowCE系统的,怎么会这样啊,真不支持吗? 如果 ...… 查看全部问答> |
|
南华大学黄智伟 放大器类赛题使用的元器件汇总及有关设计制作中的一些问题探讨 本帖最后由 paulhyde 于 2014-9-15 03:00 编辑 南华大学黄智伟 放大器类赛题使用的元器件汇总及有关设计制作中的一些问题探讨 … 查看全部问答> |




