基于STCSTC15F2K60S2单片机的串口通讯..
单片微机原理与接口技术(第2版)-基于STC15系列单片机(习题部分与答案)(3)

单片微机原理与接口技术-基于STC15系列单片机(第2版)习题部分第1章一、填空题1. 125= 01111101B= 7d H=( 0001 0010 0101)8421BCD码=(0110001 0110010 0110101)ASCII码。
2. 微型计算机由CPU、存储器、I/O 接口以及连接他们的总线组成。
3. 微型计算机的CPU是通过地址总线、数据总线、控制总线与外围电路进行连接与访问的,其中,地址总线用于CPU寻址,地址总线的数据量决定CPU的最大寻址能力;数据总线用于CPU与外围器件爱存储器、I/O接口)交换数据,数据总线的数量决定CPU一次交换数据能力;控制总线用于确定CPU与外围器件的交换数据的类型。
4. I/O 接口的作用是CPU与输入/输出设备的连接桥梁,相当于一个数据转换器。
5. 按存储性质分,微型计算机存储器分为_ _程序存储器______和数据存储器两种类型。
6. 16位CPU是指数据总线的位数为16位。
7 若CPU地址总线的位数为16,那么CPU的最大寻址能力为64K 。
8. 微型计算机执行指令的顺序是按照在程序存储中的存放顺序执行的。
在执行指令时包含取指、指令译码、执行指令三个工作过程。
9. 微型计算机系统由微型计算机和输入/输出设备组成。
10. 微型计算机软件的编程语言包括高级语言、汇编语言和机器语言三种类型。
二、选择题1.当CPU的数据总线位数为8位时,标志着CPU一次交换数据能力为D。
A. 1位B. 4 位C. 16位D. 8位2. 当CPU地址总线为8位时,标志着CPU的最大寻址能力为 C 。
A. 8个空间B. 16个空间C. 256个空间D. 64K个空间3. 微型计算机程序存储器空间一般由 A 构成。
A. 只读存储器B. 随机存取存储器4. 微型计算机数据存储器空间一般由 B 构成。
A. 只读存储器B. 随机存取存储器三、判断题1. 键盘是微型计算机的基本组成部分。
基于STC15F2K60S2 单片机的车载监控系统设计

基于STC15F2K60S2 单片机的车载监控系统设计作者:徐胜李九生来源:《江苏科技信息》 2018年第19期摘要:针对儿童遗留车内,随着气温升高氧气含量不足而导致的悲剧,文章从如何避免此类安全事故出发,设计了以STC15F2K60S2单片机为控制核心,以热释电传感器AM412为人体检测单元的智能车载监控系统,详细介绍了系统总体设计、硬件设计、程序编写等开发过程。
关键词:STC15F2K60S2;电路;温度;报警中图分类号:TH13 文献标识码:A0 引言由于工作人员(校车司机、教师、家长)的粗心大意,儿童被锁车内窒息而亡的相关报道越来越多,给每个家长,以及每辆车等敲响了警钟。
根据调查,很多车载监控系统不够完善,忽视了车内遗留儿童,忽视了车内气温升高氧气含量不足等潜在危险,如果儿童遗留车内则会发生悲剧。
本文从如何避免此类安全事故出发,设计了智能车载监控系统。
1 系统总体设计智能车载监控系统以单片机STC15F2K60S2 为控制核心,实时检测车内温度。
如果车内部温度过高超过30 ℃时,且有儿童(幼儿)遗留在车内,监控系统显示屏会实时显示当前车内状态,同时开启车内报警系统:发出报警声,报警灯光闪烁,拨打110求救报警电话,向学校安全负责人发送安全短信,自动打开车窗通风,确保在施救前车内空气流通,最终实现安全营救,杜绝安全事故的发生[1],系统整体框架如图1所示。
2 硬件电路设计2.1 控制核心硬件电路2.1.1 STC15F2K60S2硬件电路考虑到本设计需要对数据进行分析处理速度要求不高,因此本系统选用编程简单、系统稳定、成本低的STC15F2K60S2单片机。
该单片机传承于经典的8051单片机,单时钟机器周期,内部集成高精准R/C时钟,高可靠复位电路。
为确保与SIM900A通信模块之间数据传输准确无误,时钟电路电容C1和C2选用30 pF,晶振频率选用11.059 2 MHz,减小波特率误差,满足系统设计要求。
根据STCSTC15F2K60S2单片机的串口通讯

湖南科技大学信息与电气工程学院《单片机课程设计报告》题目:基于STCSTC15F2K60S2单片机的串口通讯专业:自动化班级:一班姓名:罗永恒学号: 1209010303指导教师:范小春2015年 6月 30日单片机是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的计算机系统。
本文将具体介绍单片机与PC机进行串口通信的实现方法和编程方法,并且在最后给出一个实用的单片机与计算机通过串口通信的程序。
关键词:单片机串口通信第一章 STCSTC15F2K60S2的简介 (1)1.1 STCSTC15F2K60S2的内部结构框图 (1)1.2 STC15F2K60S的DIP封装图 (1)1.3 STC15F2K60S的各引脚简介 (2)第二章单片机通过USB与PC机的通信设计 (4)2.1设计方案选择 (4)2.1.1 PC机同单片机通信存在的问题 (4)2.1.2 USB接口同RS-232(DB-9)串口的比较 (4)2.1.3 USB转接芯片的选择 (4)2.2 通信功能要求 (5)第三章硬件电路图的设计 (5)3.1单片机最小系统 (5)3.2 USB与单片机连接主电路 (6)3.3 总电路图 (6)3.4 PCB图 (6)第四章程序设计 (7)4.1 串口初始化 (7)4.2 主程序 (7)4.3 中断服务程序 (8)4.4 总程序 (8)第五章总结与体会 (10)第六章参考文献 (11)第一章 STCSTC15F2K60S2的简介1.1 STCSTC15F2K60S2的内部结构框图1.2 STC15F2K60S的DIP封装图1.3 STC15F2K60S 的各引脚简介(1)电源引脚Vcc :一般接电源的+5V 。
STC15F2K60S2串口2程序

STC15F2K60S2串口2程序下面是串口2 的程序,昨天一直没调出来的原因是由于串口发送完中断标志位,置位和清零上出了问题。
其中为什么要把它,照着资料手册上那种方式写才行,这我现在也没大清楚,我想可能这需要反汇编才看的出来,由于竞赛时间紧,只有暂且放下进一步的分析,下面是程序代码。
#include “reg51.h”sfrP4 = 0xc0;sfr P5 = 0xc8;sfr AUXR = 0x8e ;sfr S2CON = 0x9a ;sfr S2BUF = 0x9b ;sfr T2H = 0xd6 ;sfr T2L = 0xd7 ;sfr IE2 = 0xaf ;sfr IP2 = 0xb5 ;#define S2RI 0x01 // S2CON.0#define S2TI 0x02 // S2CON.1unsigned char temp ;bit flag1 = 0 , flag2 = 0 , busy = 0 ; unsigned char xdata Uart1TxBuffer [20] = “杜兴杰你必须加油个”; //void SendData ( unsigned char date ) ; //数据发送函数定义void Uart2Init(void)//9600bps@11.0592MHz{S2CON = 0x50; //8 位数据,可变波特率AUXR |= 0x04; //定时器2 时钟为Fosc,即1TT2L = 0xE0; //设定定时初值T2H = 0xFE; //设定定时初值AUXR |= 0x14; //启动定时器2 4 注意这里EA = 1 ;IE2 = 0x01 ; //开启串口中断ES2IP2 |= 0x00 ; //串口2 优先级0}void main( void ){char i ;P0 = 0;Uart2Init() ;SendData (C) ;SendData (C) ;for ( i = 0 ; i {SendData (Uart1TxBuffer[i]) ;}for ( i = 0 ; i {SendData (Uart1TxBuffer[i]) ;} SendData (C) ;SendData (C);while(1){if( flag2 == 1 ){SendData ( temp );flag2 = 0 ;}}}void Uart2( void ) interrupt 8{if( S2CON & S2RI ){S2CON &= ~ S2RI ; temp = S2BUF ;flag2 = 1 ;}if(S2CON & S2TI ){S2CON &= ~ S2TI ;busy = 0 ;}}void SendData ( unsigned char date ){while ( busy ) ; //busy = 1 ;S2BUF = date ;// while ( !( S2CON & 0x02 ) ) ;// S2CON &= ~ S2TI ;}下一步是把串口1 和串口2 加在一起,还有就是加入循环队列实现流控等tips:感谢大家的阅读,本文由我司收集整编。
STC15F2K60S2系列串口2通信程序

STC15F2K60S2系列串口2通信程序#include#include "intrins.h"#define FOSC 12000000L //系统频率#define BAUD 9600 //串口波特率#define S2RI 0x01 //S2CON.0 不能进行位寻址#define S2TI 0x02 //S2CON.1#define S2RB8 0x04 //S2CON.2#define S2TB8 0x08 //S2CON.3#define S2_S0 0x01 //P_SW2.0unsigned char a,i=0;unsigned char String[32];bit busy;/*************系统初始化****************/void sys_init(void){P20=1;P32=1;P33=1;//P_SW2 &= ~S2_S0; //S2_S0=0 (P1.0/RxD2, P1.1/TxD2) //P_SW2 |= S2_S0; //S2_S0=1 (P4.6/RxD2_2, P4.7/TxD2_2) }/*************串口2初始化************************/void Uart2_Init(void){S2CON = 0x50; //8位可变波特率T2L = (65536 - (FOSC/4/BAUD)); //设置波特率重装值T2H = (65536 - (FOSC/4/BAUD))>>8;AUXR = 0x14; //T2为1T模式, 并启动定时器2IE2 = 0x01; //使能串口2中断EA = 1;}/*************发送发送字符************************/ void SendData(unsigned char dat){while (busy); //等待前面的数据发送完成busy = 1;S2BUF =dat; //写数据到UART2数据寄存器}/************发送字符串************************/ void SendString(char *s){while (*s) //检测字符串结束标志{SendData(*s++); //发送当前字符}}void main(){sys_init();Uart2_Init();while(1){if(P33==0){// P20=0;SendString("STC15F2K60S2\r\nUart T est !\r\n");}if(P32==0){// P20=1;//SendData(a);SendString(String);}}}/************UART2 中断服务程序*******************/ void Uart2() interrupt 8 using 1{if (S2CON & S2RI){S2CON &= ~S2RI; //清除S2RI位String[i++]= S2BUF; //P0显示串口数据if(i>32)i=0;}if (S2CON & S2TI){S2CON &= ~S2TI; //清除S2TI位busy = 0; //清忙标志}}。
12 STC15F2K60S2系列单片机的SPI接口 例题

/*-----------------定义 SPI 控制位----------------*/
#define SPIF
0x80
//SPSTAT.7
#define WCOL 0x40
//SPSTAT.6
#define SSIG
0x80
//SPCTL.7
#define SPEN
0x40
//SPCTL.6
SPIF
EQU 080H
;SPSTAT.7
WCOL
EQU 040H
;SPSTAT.6
SSIG
EQU 080H
;SPCTL.7
SPEN
EQU 040H
;SPCTL.6
DORD
EQU 020H
;SPCTL.5
MSTR
EQU 010H
;SPCTL.4
1
CPOL CPHA SPDHH SPDH SPDL SPDLL SPISS
RECV_UART: JNB RI, $ CLR RI MOV A, SBUF RET RET
;等待接收数据 ;清“0”RI 标志
;取串行接收数据
SPI_SWAP:
#ifdef MASTER
CLR SPISS
;拉低从机/SS
#endif
MOV SPDAT, A
;触发 SPI 发送
WAIT:
MOV A, SPSTAT
第 12 章 STC15F2K60S2 单片机的 SPI 接口
例题
例 12.1 计算机通过 RS232 串口向主单片机发送一串数据,主单片机的串口每收到一个 字节就立刻将收到的字节通过 SPI 口发送到从单片机中;同时,主单片机收到从单片机发回 的一个字节,并把收到的这个字节通过串口发送到计算机。可以使用串口助手观察结果。
基于STCSTC15F2K60S2单片机的串口通讯综述

湖南科技大学信息与电气工程学院《单片机课程设计报告》题目:基于STCSTC15F2K60S2单片机的串口通讯专业:自动化班级:一班姓名:罗永恒学号: 1209010303指导教师:范小春2015年 6月 30日单片机是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的计算机系统。
本文将具体介绍单片机与PC机进行串口通信的实现方法和编程方法,并且在最后给出一个实用的单片机与计算机通过串口通信的程序。
关键词:单片机串口通信第一章 STCSTC15F2K60S2的简介 (1)1.1 STCSTC15F2K60S2的内部结构框图 (1)1.2 STC15F2K60S的DIP封装图 (1)1.3 STC15F2K60S的各引脚简介 (2)第二章单片机通过USB与PC机的通信设计 (4)2.1设计方案选择 (4)2.1.1 PC机同单片机通信存在的问题 (4)2.1.2 USB接口同RS-232(DB-9)串口的比较 (4)2.1.3 USB转接芯片的选择 (4)2.2 通信功能要求 (5)第三章硬件电路图的设计 (5)3.1单片机最小系统 (5)3.2 USB与单片机连接主电路 (6)3.3 总电路图 (6)3.4 PCB图 (6)第四章程序设计 (7)4.1 串口初始化 (7)4.2 主程序 (7)4.3 中断服务程序 (8)4.4 总程序 (8)第五章总结与体会 (10)第六章参考文献 (11)第一章 STCSTC15F2K60S2的简介1.1 STCSTC15F2K60S2的内部结构框图1.2 STC15F2K60S的DIP封装图1.3 STC15F2K60S 的各引脚简介(1)电源引脚Vcc :一般接电源的+5V 。
STC15串口总结

//9600bps(22.1184MHz)
ห้องสมุดไป่ตู้
{
T2L = 0xD0; //设定定时初值
T2H = 0xFF; //设定定时初值
}
if(speedform==1) {
T2L = 0xE8; T2H = 0xFF; } }
//19200bps(22.1184MHz)
//设定定时初值 //设定定时初值
3、串口配置好,波特率设定好之后,打开串口。
STC15 串口总结
一、实验硬件
1、测试芯片 STC15F2K60S。
2、单片机通过 MAX232 电平转换跟计算机通信,波特率为
9600bps。
3、定时器 2 做波特率发生器。
二、程序
1、先配置串口,包括用那组串口,数据帧,波特率是否加倍
//串口配置
void uartconfiguration(void)
{
sendbyteuart(pbufferform[i]);
}
}
//串口中断服务函数
void UART1_int (void) interrupt UART1_VECTOR
{
ES=0;
//关串口中断
If(RI)
{
RI=0;
//………………………….接收中断服务函数部分…………………………… } If(TI) {
数的进行。在完成中断服务函数的时候,要将中断标志位清零,
否则,容易出现进入中断的混乱。
四、单片机串口给计算机发一组数据
1、单片机每次只能给计算机发一字节数据,若要发一组数据,
那要一字节一字节地发,并且发送的过程中,要等前一字节发送
完成,才能接着发送下一字节的数据,否则会出现数据不正确。 五、单片机串口接收计算机发送一组数据
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
湖南科技大学信息与电气工程学院《单片机课程设计报告》题目:基于STCSTC15F2K60S2单片机的串口通讯专业:自动化班级:一班姓名:罗永恒学号: 1209010303指导教师:范小春2015年 6月 30日单片机是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的计算机系统。
本文将具体介绍单片机与PC机进行串口通信的实现方法和编程方法,并且在最后给出一个实用的单片机与计算机通过串口通信的程序。
关键词:单片机串口通信第一章 STCSTC15F2K60S2的简介 (1)1.1 STCSTC15F2K60S2的内部结构框图 (1)1.2 STC15F2K60S的DIP封装图 (1)1.3 STC15F2K60S的各引脚简介 (2)第二章单片机通过USB与PC机的通信设计 (4)2.1设计方案选择 (4)2.1.1 PC机同单片机通信存在的问题 (4)2.1.2 USB接口同RS-232(DB-9)串口的比较 (4)2.1.3 USB转接芯片的选择 (4)2.2 通信功能要求 (5)第三章硬件电路图的设计 (5)3.1单片机最小系统 (5)3.2 USB与单片机连接主电路 (6)3.3 总电路图 (6)3.4 PCB图 (6)第四章程序设计 (7)4.1 串口初始化 (7)4.2 主程序 (7)4.3 中断服务程序 (8)4.4 总程序 (8)第五章总结与体会 (10)第六章参考文献 (11)第一章 STCSTC15F2K60S2的简介1.1 STCSTC15F2K60S2的内部结构框图1.2 STC15F2K60S的DIP封装图1.3 STC15F2K60S 的各引脚简介(1)电源引脚Vcc :一般接电源的+5V 。
具体的电压幅度应参考单片机的手册。
GND :接电源地。
(2)外接晶体引脚XTAL2XTAL1C2C1GNDM单片机芯片内部一个反相放大器的输入端和输出端。
通常用于连接晶体振荡器。
(3)控制和复位引脚单片机RST/VPDGNDCr 10uFRr 10KΩVcc功能:当访问外部存储器或者外部扩展的并行I/O 口时,ALE (允许地址锁 存)的输出用于锁存地址的低位字节。
RST (与P5.4复用):当振荡器运行时,在此引脚上出现两个机器周期的 高电平将使单片机复位。
如果需要单片机接上电源就可以复位,则需要使 用上电复位电路。
(4)I/O 口的复用功能 P0口:a.用作数据总线(D7~D0)或者地址总线低8位(A7~A0)。
b.用作普通I/O 。
P1口:a.用作普通I/O 。
b.复用为ADC 转换输入、捕获/比较/脉宽调制、SPI 通信线、第二串口 或者第二时钟输出,如表所示。
P2口:a:用作通用I/O。
b:用作地址总线的高8位输出。
c:用于SPI和捕获/比较/脉宽调制的备用切换端口。
P3口:a:用作通用I/O。
b:可复用为外部中断输入、计数器输入、时钟输出、第一串口和外部总线的读/写控制,如表所示。
P4口:a:用作通用I/O。
b:某些口线具有复用功能,可配置为SPI通信线、捕捉/比较/脉宽调制、第二串口线等。
P5口:a:P5.4/RST(复位脚)/MCLKO(内部R/C振荡时钟输出;b:输出的频率可为MCLK/1或MCLK/2)/SS_3(SPI接口的从机选择信号备用切换引脚)。
c:该引脚默认为I/O口,可以通过ISP编程将其设置为RST(复位)引脚。
第二章单片机通过USB与PC机的通信设计2.1设计方案选择由于实际应用中单片机在数据处理能力、人机交互等方面往往不能满足要求, 因而通常用PC来弥补单片机的这些不足。
例如,在工程应用中,常常由一台PC机和一台单片机构成主从式计算机测控系统。
在这样的系统中,以单片机为核心的智能测控仪表(从机)作为现场测控设备,完成数据的采集、处理和控制各种任务,同时将数据传给PC机(主机),PC机将这些数据加工处理后,进行显示、打印报表等。
PC机也可以将各种控制命令传送给单片机,干预单片机系统的运行,从而发挥PC机的优势。
要实现这样的功能,就涉及到PC机与单片机之间的通信问题。
现在的计算机提供了各种各样的串口,他们支持不同的通信协议,有着不同的功能。
目前计算机提供的串口有RS-232,RJ45,USB2.0等。
2.1.1 PC机同单片机通信存在的问题目前,15系列单片机同PC机的通信在大多数情况下仍然是使用RS-232(DB-9)串口作为通信接口实现的。
而随着USB接口技术的成熟和使用的普及,由于USB 接口有着一系列RS-232(DB-9)串口无法比拟的优点,RS-232(DB-9)串口正在逐步的为USB接口所替代。
而在现在的大多数笔记本电脑中,出于节省物理空间和用处不大等原因,RS-232(DB-9)串口已不再设置,这就约束了基于RS-232(DB-9)串口与PC机联络的单片机设备的使用范围。
2.1.2 USB接口同RS-232(DB-9)串口的比较通过USB接口和RS-232(DB-9)的比较,不难发现:(1)USB接口支持即插即用和热插拔,而RS-232(DB-9)串口不支持即插即用和热插拔,设备安装后需重启计算机方可使用。
(2)USB接口的传输速率较快,可达480Mbps(V2.0),而RS-232(DB-9)串口的最高速率仅为19200波特。
(3)USB接口占用体积较小,插拔方便;而RS-232(DB-9)串口的的插拔需要使用改锥,且在机箱后操作,比较麻烦。
综上可知,USB 接口取代RS-232(DB-9)串口的趋势不可逆转。
2.1.3 USB转接芯片的选择目前常用的USB转接芯片包括PL2303,CH341,CP2101,FT232等。
在综合考虑了各方面因素后,CH341成为了本次电路设计的首选芯片。
CH341是南京沁恒电子公司生产的USB总线的转接芯片,通过USB总线提供异步串口,打印口,并口及常用的2线和4线等同步串行端口。
其特点有:(1)提供全速USB设备借口,兼容USB2.0,外围设备只需要晶体和电容;(2)可通过外部的低成本串行EPROM定义厂商ID,产品ID,序列号等;(3)成本低廉,可直接转换原串口外围设备;(4)采用SOP-28封装,串口应用还提供小型的SSOP-20封装。
正是由于在PC机同单片机通信电路中,USB转接芯片CH341 具有以上其他芯片无法比拟的优点,同时价格低廉并且提供中文技术支持,因此它成为了本电路USB转接芯片的最优选择。
本电路采用的是SSOP-20封装的CH341T,其引脚图如图所示。
2.2 通信功能要求(1)PC控制单片机IO口输出,并且通过两个LED灯显示数据发收状态,如果数据处于发送或者接收状态,则相应的LED灯闪亮。
(2)PC控制单片机IO口输出,并且通过两个按键控制PC机是否接收数据。
(3)PC机与单片机之间的通信结果通过串口助手进行调试和显示。
第三章硬件电路图的设计3.1单片机最小系统由起振电路,复位电路组成3.2 USB 与单片机连接主电路其中,两个按键分别控制是否接收数据,两个LED 灯显示接收数据状态,CH341芯片提供串口。
3.3 总电路图123456ABCD654321D CBATitleN u mb er R ev isio nSize B D ate:3-Ju l-2015Sh eet o fFile:H \B AY A NW EI\原理图D d b D raw n B y A D0/P 0.01A D1/P 0.12A D2/P 0.23A D3/P 0.34A D4/P 0.45A D5/P 0.56A D6/P 0.67A D7/P 0.78R x D 2/CC P1/A D C0/P 1.09Tx D2/C C P0/A DC 1/P1.110EC I/S S/AD C 2/P1.211MO SI/A D C3/P 1.312MISO /A D C4/P 1.413SL CK /AD C 5/P1.514X TA L2/R x D _3/A DC 6/P1.615X TA L1/Tx D_3/AD C 7/P1.716SS _3/MC LK O/R ST/P5.417V CC 18P5.519G n d 20P3.0/R x D /IN T4/T 2C LK O 21P3.1/T x D /T 222P3.2/IN T023P3.3/IN T124P3.4/T 0/T1C LK O /E CI_225P3.5/T 1/T0C LK O /C C P0_226P3.6/IN T2/R x D _2/C CP 1_227P3.7/IN T3/Tx D_2/CC P2/C C P2_228P4.1/MISO _329P4.2/W R 30P4.4/R D 31P2.0/A 8/R STO U T_L OW 32P2.1/A 9/SC LK _233P2.2/A 10/MISO _234P2.3/A 11/MO SI_235P2.4/A 12/E CI_3/S S_236P2.5/A 13/C C P0_337P2.6/A 14/C C P1_338P2.7/A 15/C C P2_339P4.5/A LE 40PD IP-40J1ST C15F2K60S2Y 112MHzC 230p F+C 647u FS2SW -P BV CCV CC 19V 35G ND 8V D-7V D+6X 19X 010N OS #20Tx D 4R x D 3U 1C H3411234U 2U SBV CCC 3C APC 4C APY 2C RY ST ALC 5C APC 7C APV CCD 31N 5817R 3301RR 13.3k R 23.3kD 1LE DD 2LE DS1SW 17S3SW 18C 1C AP3.4 PCB 图第四章程序设计4.1 串口初始化void UartInit(void) //115200bps@22.1184MHz{SCON = 0x50; //8位数据可变波特率AUXR |= 0x40; //定时器1时钟为Fosc,即1TAUXR &= 0xFE; //串口1选择定时器1为波特率发射生器TMOD &= 0x0F; //设置定时器1为16位自动重装方式TL1 = 0xD0; //设定定时初值TH1 = 0xFF; //设定定时初值ET1 = 0; //禁止定时器1中断TR1 = 1; //启动定时器1}4.2 主程序void main(void){P0M1 = 0; P0M0 = 0; //设置为准双向口P1M1 = 0; P1M0 = 0; //设置为准双向口P2M1 = 0; P2M0 = 0; //设置为准双向口P3M1 = 0; P3M0 = 0; //设置为准双向口P4M1 = 0; P4M0 = 0; //设置为准双向口P5M1 = 0; P5M0 = 0; //设置为准双向口P6M1 = 0; P6M0 = 0; //设置为准双向口P7M1 = 0; P7M0 = 0; //设置为准双向口UartInit() ;//UART1_config(1); // 选择波特率, 2: 使用Timer2做波特率, 其它值: 使用Timer1做波特率.EA = 1; //允许总中断ES=1; //开串口中断PrintString1("STC15F2K60S2 UART1 Test Prgramme!\r\n"); //SUART1发送一个字符串while (1){ if(INT0==0) //如果相应按键(默认为sw18)按下,则允许接收 {REN=0;}if((TX1_Cnt != RX1_Cnt) && (!B_TX1_Busy)) //收到数据, 发送空闲{SBUF = RX1_Buffer[TX1_Cnt]; //把收到的数据远样返回B_TX1_Busy = 1;if(++TX1_Cnt >= UART1_BUF_LENGTH) TX1_Cnt = 0;}else{if(INT1==0) //如果相应按键(默认为sw17)按下,则禁止接收 {REN=1;}}}}4.3 中断服务程序void UART1_int (void) interrupt 4//中断服务子程序{if(RI) //如果产生中断,则把SBUF内容赋值给单片机的数组{RI = 0;RX1_Buffer[RX1_Cnt] = SBUF;if(++RX1_Cnt >= UART1_BUF_LENGTH)RX1_Cnt = 0; //防溢出}if(TI){TI = 0;B_TX1_Busy = 0;}}4.4 总程序/************* 功能说明**************双串口全双工中断方式收发通讯程序。