1、第 1 页 共 6 页 实验三 单片机串行口编程一、实验目的1、掌握单片机串行口的工作方式;2、掌握单片机串行口的编程方法。二、实验内容1、学习单片机串行口的工作方式、初始化以及应用等;2、利用单片机串行口编写程序,利用串口助手工具通过 PC 机发送相应信息,单片机串行口根据接收到的信息控制开发板上的 LED 灯按一定规律工作。要求:“#”指令开始标志, “*”指令结束标志。根据接收到的指令 start控制 LED 灯闪烁,闪烁频率 1Hz;pause控制LED 点亮; stop控制 LED 熄灭。测试串口正常工作的代码(通过串口接收一个字符,再发送回串口)#include main() un
2、signed char a;/*在 12MHz 下,设置 4800 波特率,方式 1*/TMOD=0x20; /设置定时器 1 的方式第 2 页 共 6 页 TH1=0xf3; /设置定时器 1 的初值TL1=0xf3; SCON=0x50; /设置串行口方式 1,并允许接收PCON=0x80; /SMOD=1TR1=1; /启动定时器 1while(1)while(RI=0);a=SBUF;RI=0;SBUF=a;while(TI=0);TI=0; 三、实验设备1、STC 单片机开发板;2、PC 机以及串口线。四、实验分析及关键代码#include sbit led=P25;unsigned
3、 char a; /串行第 3 页 共 6 页 unsigned char num; /定时unsigned char start=“#start*“;unsigned char stop=“#stop*“;unsigned char pause=“#pause*“;unsigned char startNum,stopNum,pauseNum;/初始化void init()TMOD=0x21; /设置定时器方式/定时器TH0=(65536-50000)/256; TL0=(65536-50000)%256;EA=1;ET0=1;/串口TH1=0xf3; TL1=0xf3; SCON=0x50
4、; /设置串行口方式 1 01100000PCON=0x80; /TR1=1; ES = 1; /允许串行中断第 4 页 共 6 页 /定时器中断void Timer0() interrupt 1TH0=(65536-50000)/256; TL0=(65536-50000)%256;num +;if(num=20)num=0;led=!led;/串行中断void seri() interrupt 4/RI 接受中断标志 TI 发送中断标志if(RI)第 5 页 共 6 页 a=SBUF;RI=0;SBUF=a;while(TI=0);TI=0;/if(startstartNum=a else startNum=0;if(pausepauseNum=a else pauseNum=0;if(stopstopNum=a else stopNum=0;if(startNum=7)TR0=1;/启动定时器if(pauseNum=7)TR0=0;第 6 页 共 6 页 led=0;if(stopNum=6)TR0=0;led=1;void main() init();while(1);