历史上的今天
今天是:2025年01月22日(星期三)
2020年01月22日 | STC15串口1\串口2\串口3和串口4源程序
2020-01-22 来源:51hei
STC15标准程序,有需要的可以参考。
单片机源程序如下:
//本程序的功能是串口1串口2串口3和串口4独立接受数据,并将接收到的数据再发送出去
#include #include "stdio.h" #include "intrins.h" #include "stdlib.h" #include "absacc.h" #define uchar unsigned char #define uint unsigned int #define ulong unsigned long uchar idata SendBuf1[6], SendBuf2[6], SendBuf3[6], SendBuf4[6]; sbit OUT1 = P1^7; sbit OUT2 = P3^2; sbit OUT3 = P2^7; sbit OUT4 = P0^7; sbit OUT5 = P3^3; void serial_port1_initial(); void send_UART1(); void UART1_Interrupt_Receive(void); void serial_port2_initial(); void send_UART2(); void serial_port3_initial(); void send_UART3(); void serial_port4_initial(); void send_UART4(); void UART2_Interrupt_Receive(void); void delayus(uint i); void delayms(uint i); void main(void) { OUT1=0; OUT2=0; OUT3=0; OUT4=0; OUT5=0; serial_port1_initial(); serial_port2_initial(); serial_port3_initial(); serial_port4_initial(); P0M0 =0x00; P0M1 =0x00; P1M0 =0x00; P1M1 =0x00; P2M0 =0x00; P2M1 =0x00; P3M0 =0x00; P3M1 =0x00; P4M0 =0x00; P4M1 =0x00; P5M0 =0x00; P5M1 =0x00; delayms(1000); while(1) { /* send_UART1(); send_UART2(); send_UART3(); send_UART4(); OUT1=0; OUT2=0; OUT3=0; OUT4=0; delayms(10); OUT1=1; OUT2=1; OUT3=1; OUT4=1; OUT1=~OUT1; OUT2=~OUT2; OUT3=~OUT3; OUT4=~OUT4; */ delayus(1000); OUT1=~OUT1; OUT2=~OUT2; OUT3=~OUT3; OUT4=~OUT4; OUT5=~OUT5; } } void serial_port1_initial() //用定时器1作为波特率发生器 { TMOD &= 0x0F; //0x0f:设定定时器1为16位自动重装方式 0x2f: 设定定时器1为8位自动重装方式 SCON = 0x50; //8位数据,可变波特率 AUXR = 0x40; //定时器1时钟为Fosc,即1T S1ST2=0,串口1选择定时器1为波特率发生器 AUXR1= 0x40; //0x00=串口1在P3.0,P3.1,0x40=串口1在P3.6,P3.7, TH1 = 0xFE; //设定定时初值 TL1 = 0xE0; //设定定时初值 9600/11.0592Mhz ET1 = 0; //禁止定时器1中断 TR1 = 1; //启动定时器1 ES = 1; EA = 1; } void send_UART1() { unsigned int i=0; TI = 0; for (i=0;i<6;i++) { SBUF = SendBuf1[i]; while (TI==0); TI=0; } } void UART1_Interrupt_Receive(void) interrupt 4 { unsigned char k =0; if(RI == 1) { RI = 0; SendBuf1[0] = SendBuf1[1]; SendBuf1[1] = SendBuf1[2]; SendBuf1[2] = SendBuf1[3]; SendBuf1[3] = SendBuf1[4]; SendBuf1[4] = SendBuf1[5]; SendBuf1[5] = SBUF; } } void serial_port2_initial() { S2CON = 0x50;//01010000 8位可变波特率,无奇偶校验,允许接收 T2H = 0xFE; //设定定时初值 T2L = 0xE0; //设定定时初值 AUXR |= 0x14; ////定时器2时钟为Fosc,即1T ,启动定时器2, IE2 = 0x01; //ES2 = 1; P_SW2=0x00; //串口2、3、4的位置 EA = 1; } void serial_port3_initial() { S3CON = 0x50;//01010000 8位可变波特率,无奇偶校验,允许接收 ,选择定时器4作为波特率发生器 0x10=选择定时器2作为波特率发生器 T3H = 0xFE; //设定定时初值 T3L = 0xE0; //设定定时初值 T4T3M |= 0x0A; ////定时器3时钟为Fosc,即1T ,启动定时器3, IE2 |= 0x08; //ES3 = 1; P_SW2=0x00; //串口2、3、4的位置 EA = 1; } void serial_port4_initial() { S4CON = 0x50;//01010000 8位可变波特率,无奇偶校验,允许接收 ,选择定时器4作为波特率发生器 0x10=选择定时器2作为波特率发生器 T4H = 0xFE; //设定定时初值 T4L = 0xE0; //设定定时初值 T4T3M |= 0xA0; ////定时器3时钟为Fosc,即1T ,启动定时器3, IE2 |= 0x10; //ES4 = 1; P_SW2=0x00; //串口2、3、4的位置 EA = 1; } void send_UART2() { uchar temp = 0, i=0; S2CON = S2CON & 0xfd; //S2TI = 0; for (i=0;i<6;i++) { S2BUF = SendBuf2[i]; do { temp = S2CON; temp = temp & 0x02; //temp=S2TI }while(temp == 0); S2CON = S2CON & 0xfd; //S2TI = 0; } } void send_UART3() { uchar temp = 0, i=0; S3CON = S3CON & 0xfd; //S2TI = 0; for (i=0;i<6;i++) { S3BUF = SendBuf3[i]; do { temp = S3CON; temp = temp & 0x02; //temp=S2TI }while(temp == 0); S3CON = S3CON & 0xfd; //S2TI = 0; } } void send_UART4() { uchar temp = 0, i=0; S4CON = S4CON & 0xfd; //S2TI = 0; for (i=0;i<6;i++) { S4BUF = SendBuf4[i];
史海拾趣
|
对等网络(P2P)技术是目前国际计算机网络技术领域研究的一个热点,被《财富》杂志誉为将改变互联网未来的四大新技术之一,目前微软、Sun、IBM等很多著名的企业和公司都投入到对P2P技术的研究之中。 P2P计算并非一种全新的技术,在20世纪70 ...… 查看全部问答> |
|
本帖最后由 paulhyde 于 2014-9-15 09:39 编辑 在电子系统设计中,为了少走弯路和节省时间,应充分考虑并满足抗干扰性的要求,避免在设计完成后再去进行抗干扰的补救措施。形成干扰的基本要素有三个: (1)干扰源,指产生干扰的元件、设备或信 ...… 查看全部问答> |
|
美味汉堡电话 个很可爱的汉堡包电话机,从中间打开就有按键,可做分机,但不能挂在墙上,可放在床头,客厅或其他地方,即是一件漂亮的装饰品,又很实用。爱吃汉堡包的朋友可以一饱眼福啦! 王老吉电话 逼真的易拉罐装王老吉,不经意间总会有人拿 ...… 查看全部问答> |
|
不知道如何将320×240,8位的bmp图片load进SRAM,我想做一些图像处理的东西,我知道有可以将bmp转换成ccs数据格式,然后用load data的方法,可是研究了很久没有找到转换的方法… 查看全部问答> |
|
圆点博士微型四轴飞行器线路图之线路图和PCB布局: 1。圆点博士微型四轴飞行器线路图之主控部分: 1)STM32最小系统 2)传感器I2C接口, 3)2.4G遥控SPI接口 4)USB接口 5)液晶屏接口---用于方便编程和调试 6)COM调试接口---方便实用电脑C ...… 查看全部问答> |
|
最近因CES 2013选题任务压顶,亚历山大之下,也要玩玩泄密游戏。昨儿拜访了一家中国的PC厂商,就在哥欲解决三急难题时,途经拐角的一间会议室,透过半敞的门缝,看到一个估摸30寸左右的“智能大桌面”,运行着一个哥都未曾见过的操作系统! 偷偷走 ...… 查看全部问答> |




