单片机原理与接口期末总复习_第1页
单片机原理与接口期末总复习_第2页
单片机原理与接口期末总复习_第3页
单片机原理与接口期末总复习_第4页
单片机原理与接口期末总复习_第5页
已阅读5页,还剩66页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、MCS-51单片机的内部组成单片机的内部组成时钟电路CPUROMRAMT0 T1中断系统串行接口并行接口P0 P1 P2 P3TXD RXDINT0 INT1定时计数器结构框图结构框图中央处理器中央处理器CPU:8位,位,运算和控制运算和控制功能功能内部内部RAM:共共256个个RAM单单元,用户使用元,用户使用前前128个单元,个单元,用于存放可读用于存放可读写数据,后写数据,后128个单元被个单元被专用寄存器占专用寄存器占用。用。定时定时/计数器:计数器:两个两个16位的定位的定时时/计数器,实计数器,实现定时或计数现定时或计数功能。功能。并行并行I/O口:口:4个个8位的位的I/O口口P

2、0、P1、P2、P3。串行口:串行口:一个全一个全双工串行口。双工串行口。中断控制系统:中断控制系统:5个中断源(外个中断源(外部中断部中断2个,定个,定时时/计数中断计数中断2 个,串行中断个,串行中断1个)个)时钟电路:时钟电路:可可产生时钟脉冲产生时钟脉冲序列,晶振频序列,晶振频率率6MHZ , 12MH或或11.0592MH内部内部ROM:4KB,用于存,用于存放程序、原始放程序、原始数据和表格。数据和表格。单片机最小系统单片机最小系统单片机工作的基本时序单片机工作的基本时序 (1 1)时钟周期)时钟周期: : 也称振荡周期也称振荡周期, Tosc=1/fosc, Tosc=1/fos

3、c。如。如fosc=12MHzfosc=12MHz,Tosc=1/12M=1/12usTosc=1/12M=1/12us。 (2 2)机器周期)机器周期: :一个机器周期包括一个机器周期包括1212个时钟周期个时钟周期. . ALE ALE信号以时钟脉冲信号以时钟脉冲1/61/6的频率出现。的频率出现。(3 3)指令周期)指令周期: : 是指是指CPUCPU完成一条指令所需的时间。完成一条指令所需的时间。 每条指每条指令执行时间都是有一个或几个机器周期组成。令执行时间都是有一个或几个机器周期组成。1234567891011121314151617181920403938373635343332

4、313029282726252424222180318751805189C5189S514K256B(字节)MCS-51单片机的存储器结构单片机的存储器结构64K12345678910111213142827262524232221 201918171615RAM6264 12345678910111213142827262524232221 201918171615RAM6264 12345678910111213142827262524232221 201918171615EPROM276412345678910111213142827262524232221 201918171615EP

5、ROM276464K程序程序存储器存储器内部外部0000H0FFFH(4K)0000HFFFFH(64K)0000H0FFFH(4K)EA=1 EA=0EA=1 EA=0MCS-51单片机的存储器结构单片机的存储器结构0000HFFFFH(64K)片内低片内低128B-data内部外部数据数据存储器存储器00HFFH7FH80H(高128B)(低128B)RAM专用寄存器MCS-51单片机的存储器结构单片机的存储器结构片外片外64K-xdata00HFFH片外片外256B-pdata并行I/O口u当P0、 P1、 P2、 P3口作普通I/O口输入时: 必须先写“1” 。u当P0作普通I/O口输

6、出时: 必须外接上拉电阻。uP3口使用第二功能时: 就无法再作为I/O口使用了。u系统外扩存储器扩展时: P0口作为低8位地址/数据总线,P2口作为高8位地址总线,就不能再作为I/O口使用。/* 控制控制8个发光二极管闪烁程序个发光二极管闪烁程序*/#include void delay (unsigned char i);void main( ) while(1) P1=0 x00; /将将P1口的口的8位引脚置位引脚置“0”输输出出 delay(100); /延时延时 P1=0 xff; /将将P1口的口的8位引脚置位引脚置“1”输出输出 delay(100); /延时延时 void de

7、lay (unsigned char i) /延时函数延时函数 unsigned char j,k; for(k=0;ki;k+) for(j=0;j120;j+) ;P1. 0P1. 1P1. 2P1. 3P1. 4P1. 5P1. 6P1. 70000000011111111/* 流水灯流水灯*/#include void delay (unsigned char n) /延时函数延时函数 unsigned char j,k; for(k=0;kn;k+) for(j=0;j120;j+) ;void main() unsigned char i; while(1) for(i=0;i8;

8、i+) P1=(0 x01i); delay(100); P1. 0P1. 1P1. 2P1. 3P1. 4P1. 5P1. 6P1. 7/* 流水灯流水灯*/#include #include void delay (unsigned char i) /延时函数延时函数 unsigned char j,k; for(k=0;ki;k+) for(j=0;j120;j+) ;void main( ) unsigned char i;while(1) for(i=0;i8;i+) P1=_crol_(0 xfe,i); /P1端口的值向左循环移动端口的值向左循环移动1位位 delay(100);

9、 /延时延时 P1. 0P1. 1P1. 2P1. 3P1. 4P1. 5P1. 6P1. 7u按下按下K1键键led灯从上向下移位显示灯从上向下移位显示100ms;按下;按下K2键键led灯从灯从下向上移位显示下向上移位显示100ms,按下,按下K3键键8个个LED都熄灭。都熄灭。#include #include sbit k1=P10;sbit k2=P11;sbit k3=P12;void delay (unsigned char n) /延时函数延时函数 unsigned char j,k; for(k=0;kn;k+) for(j=0;j120;j+) ;void main( )

10、P1=0 xff; unsigned char i; while(1) if(k1=0) for(i=0;i8;i+) P2=_crol_(0 xfe,i); /向左移向左移1位位 delay(100); if(k2=0) for(i=0;i8;i+) P2=_cror_(0 x7f,i); /向右移向右移1位位 delay(100); if(k3=0) P2=0 xff; 5151单片机的定时单片机的定时/ /计数器计数器8051T0T116位位16位位T0控控制制10TC /定时定时/ /计数器的两种功能:计数器的两种功能:定时和计数定时和计数每个每个机器周期机器周期使计数器加使计数器加1

11、 1 对机器周期进行计数对机器周期进行计数定时时间定时时间= =定时器T1. 1. 定时功能定时功能机器周期(机器周期(T T)计数个数(计数个数(N N)T0控控制制11TC /每检测一个负跳变信号计数器加每检测一个负跳变信号计数器加1 1 对引脚对引脚T0/T1的外部脉冲信号进行计数的外部脉冲信号进行计数计数器T2. 2. 计数功能计数功能定时定时/ /计数器的两种功能:计数器的两种功能:定时和计数定时和计数定时定时/ /计数器的特殊功能寄存器计数器的特殊功能寄存器 1.1.工作方式寄存器工作方式寄存器TMOD TMOD M0M1C/TGATED0D1D2D3D4D5D6D7控制控制T0T

12、0M0M1C/TGATE控制控制T1T1D7D6D5D4D3D2D1D0TF0 TR02.2.控制寄存器控制寄存器TCONTCON用于外部中断TF1TR1控制控制T0T0控制控制T1T1可进行位寻址M1 M0方式方式说说 明明0 0方式方式0 01313位计数器(位计数器(THTH高高8 8位加上位加上TLTL中的低中的低5 5位)位)0 1方式方式1 11616位计数器位计数器1 0方式方式2 2自动重装初值的自动重装初值的8 8位计数器位计数器1 1方式方式3 3T0 T0 分为分为2 2个个8 8位计数器,位计数器,T1T1停止计数停止计数控控制制TC/GATETR0定时定时/ /计数器

13、的四种工作方式计数器的四种工作方式M1 M0方式方式说说 明明0 0方式方式0 01313位计数器(位计数器(THTH高高8 8位加上位加上TLTL中的低中的低5 5位)位)0 1方式方式1 11616位计数器位计数器1 0方式方式2 2自动重装初值的自动重装初值的8 8位计数器位计数器1 1方式方式3 3T0 T0 分为分为2 2个个8 8位计数器,位计数器,T1T1停止计数停止计数控控制制TC/GATETR0定时定时/ /计数器的四种工作方式计数器的四种工作方式M1 M0方式方式说说 明明0 0方式方式0 01313位计数器(位计数器(THTH高高8 8位加上位加上TLTL中的低中的低5

14、5位)位)0 1方式方式1 11616位计数器位计数器1 0方式方式2 2自动重装初值的自动重装初值的8 8位计数器位计数器1 1方式方式3 3T0 T0 分为分为2 2个个8 8位计数器,位计数器,T1T1停止计数停止计数定时定时/ /计数器的四种工作方式计数器的四种工作方式M1 M0方式方式说说 明明0 0方式方式0 01313位计数器(位计数器(THTH高高8 8位加上位加上TLTL中的低中的低5 5位)位)0 1方式方式1 11616位计数器位计数器1 0方式方式2 2自动重装初值的自动重装初值的8 8位计数器位计数器1 1方式方式3 3T0 T0 分为分为2 2个个8 8位计数器,位

15、计数器,T1T1停止计数停止计数定时定时/ /计数器的四种工作方式计数器的四种工作方式第5章 MCS - 51单片机内部定时/计数器定时定时/ /计数器的初始化编程计数器的初始化编程计算计数初值,将计数初值送入初值寄存器THi、TLi; 确定工作方式,写工作方式寄存器TMOD; 注意:若使用中断方式,则要开中断(置位EA、ETi)。启动计数器,将 TRi置位。计数初值的计算设满计数值为M, 待计数值为N, 初值为X, 则X的计算方法分两种情况: 计数(对外部脉冲)状态: X=MN定时(对机器周期计数)状态: X=M定时时间/T 其中,T=12晶振频率方式013 位计数器2138192方式116

16、 位计数器21665536方式28位计数器 28256方式38位计数器28256满计数值满计数值MM定时器的应用定时器的应用 利用定时器利用定时器T0T0、工作方式、工作方式1 1实现实现10ms10ms延时,单片机晶振延时,单片机晶振频率为频率为12MHz12MHz,采用查询方式,编写延时函数。采用查询方式,编写延时函数。 1000XXXXM0M1C/TGATEM0M1C/TGATETMOD=00000001B=01H2 2)计算计数初值)计算计数初值: : 机器周期机器周期T=12T=1212MHz=1s12MHz=1s根据 X 216定时时间/T =6553610000 /1555361

17、)TMOD初始化初始化:定时器的应用定时器的应用 利用定时器利用定时器T0T0、工作方式、工作方式1 1实现实现10ms10ms延时,单片机晶振延时,单片机晶振频率为频率为12MHz12MHz,采用查询方式,编写延时函数。采用查询方式,编写延时函数。 程程序序设设计计: : void delay10ms() TMOD=0 x01; TH0=TH0=55536/256; TL0=TL0=55536%256; TR0=1; while(!TF0) ; TF0=0; 定时器的应用定时器的应用 练习题:练习题:利用定时器利用定时器T1T1、工作方式、工作方式2 2实现实现1ms1ms延时,单片延时,单

18、片机晶振频率为机晶振频率为12MHz12MHz,采用查询方式,编写延时函数。采用查询方式,编写延时函数。 XXXX0100M0M1C/TGATEM0M1C/TGATETMOD=00100000B=20H2 2)计算计数初值)计算计数初值: : 机器周期机器周期T=12T=1212MHz=1s12MHz=1s根据 X 28定时时间/T =2561000 /1? TH1=06H, TL1=06H1)TMOD初始化初始化:可定时250us,再循环4次即可。 X 28定时时间/T =256250 /16定时器的应用定时器的应用 练习题:练习题:利用定时器T1、工作方式2实现1ms延时,单片机晶振频率为

19、12MHz,采用查询方式,编写延时函数。 程程序序设设计计: : void delay1ms() unsigned char i; TMOD=0 x20; TH1=0 x06; TL1=0 x06; TR1=1; for(i=0;i4;i+) while(!TF1) ; TF1=0; 定时器的应用定时器的应用 利用计数器利用计数器T1T1、工作方式、工作方式2 2实现实现对外部按键次数计数对外部按键次数计数,并在数码管并在数码管( (共阴)上显示共阴)上显示(0-99)(0-99)。 字形字形0123456789黑黑共阴共阴3F065B4F666D7D077F6F00XXXX0110M0M1C

20、/TGATEM0M1C/TGATETMOD=01100000B=60H2 2)计数初值)计数初值: : TH1=00H, TL1=00H1)TMOD初始化初始化:定时器的应用定时器的应用 利用计数器利用计数器T1T1、工作方式、工作方式2 2实现实现对外部按键次数计数对外部按键次数计数,并在数码管并在数码管( (共阴)上显示。共阴)上显示。 程程序序设设计计: : #include unsigned char code table =0 x3f,0 x06,0 x5b,0 x4f,0 x66, 0 x6d,0 x7d,0 x07,0 x7f,0 x6f;void main( ) TMOD=0

21、x60; TH1=0 x00; TL1=0 x00; TR1=1; while(1) if(TL1=99) P0=tableTL1/10; P2=tableTL1%10; else TL1=0; 定时器的应用定时器的应用 利用计数器利用计数器T1T1、工作方式、工作方式2 2实现实现对外部按键次数计数对外部按键次数计数,并在数码管并在数码管( (共阴)上显示。共阴)上显示。 字形字形0123456789黑黑共阴共阴3F065B4F666D7D077F6F00定时器的应用定时器的应用 利用计数器利用计数器T1T1、工作方式、工作方式2 2实现实现对外部按键次数计数对外部按键次数计数,并在数码管并

22、在数码管( (共阴)上显示,延时采用定时器共阴)上显示,延时采用定时器T0T0实现。实现。 字形字形0123456789黑黑共阴共阴3F065B4F666D7D077F6F0010000110M0M1C/TGATEM0M1C/TGATETMOD=01100001B=61H2 2)计数初值)计数初值: : TH1=ffH, TL1=ffH1)TMOD初始化初始化:定时器的应用定时器的应用 利用计数器利用计数器T1T1、工作方式、工作方式2 2实现实现对外部按键次数计数对外部按键次数计数,并在,并在数码管数码管( (共阴)上显示,延时采用定时器共阴)上显示,延时采用定时器T0T0实现实现(6MHz

23、(6MHz晶振)。晶振)。 程程序序设设计计: : #include unsigned char code table =0 x3f,0 x06,0 x5b,0 x4f,0 x66, 0 x6d,0 x7d,0 x07,0 x7f,0 x6f;void delay10ms() TH0=(65536-5000)/256; TL0= (65536-5000)%256; TR0=1; while(TF0=0); TF0=0; void main( ) unsigned char count=0; TMOD=0 x61; TH1=0 xff; TL1=0 xff; TR1=1; 利用计数器利用计数器T

24、1T1、工作方式、工作方式2 2实现实现对外部按键次数计数对外部按键次数计数,并在数码管并在数码管( (共阴)上显示,延时采用定时器共阴)上显示,延时采用定时器T0T0实现。实现。 while(1) if(TF1=1) count+; TF1=0; if(count10) P2=0 x7f; /选中个位数码管选中个位数码管 P0=tablecount; /显示计数显示计数 else P2=0 x7f; /选中个位数码管选中个位数码管 P0=tablecount%10; /显示个位数显示个位数 delay10ms(); P2=0 xbf; /选中十位数码管选中十位数码管 P0=tablecoun

25、t/10; /显示十位数显示十位数 delay10ms(); 程程序序设设计计: : #include unsigned char code table =0 x3f,0 x06,0 x5b,0 x4f,0 x66, 0 x6d,0 x7d,0 x07,0 x7f,0 x6f;unsigned char count=0;void delay10ms() TH0=(65536-5000)/256; TL0= (65536-5000)%256; TR0=1; while(TF0=0); TF0=0; void main(void) TMOD=0 x61; TH1=0 xff; TL1=0 xff;

26、 TR1=1; 利用计数器利用计数器T1T1、工作方式、工作方式2 2实现实现对外部按键次数计数对外部按键次数计数,并在数码管并在数码管( (共阴)上显示,延时采用定时器共阴)上显示,延时采用定时器T0T0实现实现(6MHz(6MHz晶晶振),振),T1T1采用中断方式采用中断方式 。 EA=1;ET1=1; while(1) if(TF1=1) count+; TF1=0; if(count10) P2=0 x7f; /选中个位数码管选中个位数码管 P0=tablecount; /显示计数显示计数 else P2=0 x7f; /选中个位数码管选中个位数码管 P0=tablecount%10

27、; /显示个位数显示个位数 delay10ms(); P2=0 xbf; /选中十位数码管选中十位数码管 P0=tablecount/10; /显示十位数显示十位数 delay10ms(); void t1_int() interrupt 3 count+;作业题:作业题:利用计数器利用计数器T1T1、工作方式、工作方式2 2,实现每,实现每按按5 5次按键(次按键(5 5个脉冲)计个脉冲)计1 1个数个数,计数值显示在数码管,计数值显示在数码管( (共阳)上。共阳)上。T1T1采用采用中断方式和查询两种方式实现。中断方式和查询两种方式实现。 IE0TCONSCONINT0 IT0=0 IT0

28、=1INT1 IT1=0 IT1=1TF0 IE1TF1T0T1TIRITXDRXDESET0EX0EX1ET1EA自然优先级自然优先级高级中断请求高级中断请求自然优先级自然优先级低级中断请求低级中断请求PX0PT0PX1PT1PSIEIP MCS-51 MCS-51的中断系统结构图的中断系统结构图中断标志位中断源允许总允许中断优先级 MCS-51中断系统CPU C51中断函数的定义形式为: void 函数名( ) interrupt n 其中n为中断类型号。MCS-51中断系统INT0:外部中断0INT1:外部中断1T0:定时器0T1:定时器0串行口01234中断源中断源中断类型号中断类型号

29、n#include void delay_t (unsigned char t) unsigned char i; TMOD=0 x10; for(i=0;it;i+) TH1=15536/256; TL1=15536%256; TR1=1; while( !TF1 ); TF1=0; /主程序主程序void main() unsigned char j; EA=1; EX1=1; IT1=1; while(1) for(j=0;j8;j+) P1=(0 x01j); delay_t(10); 程序设计程序设计: : 通过P1.0P1.7控制发光二极管,主程序实现8个灯循环依次点亮,时间间隔为

30、0.5s。利用外部中断1,实现发光二级管间隔1秒全亮全灭一次。晶振12MHZ。unsigned char m,n,l;/外部中断外部中断1服务程序服务程序void int1( ) interrupt 2 P1=0 x00; delay_t(20) ; P1=0 xff; delay_t(20) ; 独立式按键独立式按键接口电路:# include void main()unsigned char temp;P1=0 xff; while(1) if(P1!=0 xff) delayms(10); void delayms(unsigned int t)unsigned int i,j;for(

31、i=0;it;i+)for(j=0;j120;j+); if(P1!=0 xff) switch(P1) case 0 xfe:key1();break; case 0 xfd;key2();break; case 0 xfb:key3();break; case 0 xf7;key4();break; case 0 xef:key5();break; case 0 xdf;key6();break; case 0 xbf:key7();break; case 0 x7f;key8();break; default: break; while(P1!=0 xff);/等待键释放等待键释放 矩阵

32、式键盘矩阵式键盘 每个按键有它的行值和列值每个按键有它的行值和列值 ,行值和列值的组合就是,行值和列值的组合就是识别这个按键的编码。识别这个按键的编码。矩阵键盘扫描子程序包括以下几个步骤: 1.判别有无键按下; 2.扫描获取闭合键的行、列值,确定哪一个键按下 ; 3.保存闭合键号; 4.确定键的功能是什么 。unsigned char scan_key( ) P1=0 xf0;if(P1!=0 xf0) delayms(10); if(P1!=0 xf0) P1=0 xfe;switch(P1) case 0 xee:key=0;break; case 0 xde:key=1;break; c

33、ase 0 xbe:key=2;break; case 0 x7e:key=3;break; 矩阵键盘识别方法矩阵键盘识别方法1 1:扫描法:扫描法 P1=0 xfd;switch(P1) case 0 xed:key=4;break; case 0 xdd:key=5;break; case 0 xbd:key=6;break; case 0 x7d:key=7;break; unsigned char key; P1=0 xfb;switch(P1) case 0 xeb:key=8;break; case 0 xdb:key=9;break; case 0 xbb:key=10;brea

34、k; case 0 x7b:key=11;break; P1=0 xf0; while(P1!=0 xf0) ;/等待按键释放等待按键释放 return(key); P1=0 xf7;switch(P1) case 0 xe7:key=12;break; case 0 xd7:key=13;break; case 0 xb7:key=14;break; case 0 x77:key=15;break; unsigned char scan_key() /键盘扫描键盘扫描 unsigned char hang,lie; P1=0 x0f; /列线输出低电平列线输出低电平if(P1!=0 x0f)

35、delay(10);if(P1!=0 x0f) switch(P1&0 x0f) /检测行号检测行号case 0 x0e:hang=0;break;case 0 x0d:hang=1;break;case 0 x0b:hang=2;break;case 0 x07:hang=3;break;矩阵键盘识别方法矩阵键盘识别方法2 2:线反转法:线反转法unsigned char key; P1=0 xf0; /行线输出低电平,检测列号行线输出低电平,检测列号 switch(P1&0 xf0)case 0 xe0:lie=0;break;case 0 xd0:lie=1;break;

36、case 0 xb0:lie=2;break;case 0 x70:lie=3;break; P1=0 x0f; while(P1!=0 x0f); /等待按键释放等待按键释放 key=hang*4+lie; return (key);8.2 MCS-51的串行接口的串行接口 VCCVSSXTAL2XTAL1RSTP0. 0P0.1P0.2 P0.3 P0.4 P0.5 P0.6 P0.7P1. 0P1.1P1.2 P1.3 P1.4 P1.5 P1.6 P1.7P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2. 0ALEP3. 0P3.1P3.2 P3.3 P3.4

37、 P3.5 P3.6 P3.7EAPSENRXD/TXD/INT0/ INT1/ T0/ T1/WR/ RD/1234567891011121314151617181920403938373635343332313029282726252424222180318051 875189C5189S518.2.1 串行口基本结构串行口基本结构串行口基本结构串行口基本结构8.2.2 串行口寄存器1. 控制寄存器控制寄存器SCONSM0SM1SM2RENTB8 RB8 TIRI工作方式选择多机通信控制位允许串行接收位接收数据的第9位发送数据的第9位接收中断标志发送中断标志8.2.2 串行口寄存器2.电源

38、及波特率控制寄存器电源及波特率控制寄存器PCON位位 序序 D7 D6 D5 D4 D3 D2 D1 D0位符号位符号 SMOD用于波特率计算用于波特率计算,8.2.3 串行口四种工作方式串行口四种工作方式工作方式功能说明波特率方式08位同步移位寄存器常用于扩展I/O口fosc/12方式110位异步收发1位起始位、 8位数据位、1位停止位可变(取决于T1溢出率)方式211位异步收发1位起始位、 8位数据、1位可编程位(第9位数据)和1位停止位fosc/64或fosc/32方式311位异步收发同方式2可变(取决于T1溢出率)返回 波特率(b/s)晶振(MHz)T1方式2初值SMOD=0误差% S

39、MOD=1误差%1200120 xE60.160 xCC0.162400120 xF30.160 xE60.164800120 xF9-6.990 xF30.169600120 xFD8.510 xF9-6.9919200120 xFD8.51120011.05920 xE800 xD00240011.05920 xF400 xE80480011.05920 xFA00 xF40960011.05920 xFD00 xFA01920011.059200 xFD0波特率=)x256(12f322oscsmod返回通信协议:串行口工作于方式通信协议:串行口工作于方式1 1,可以收发数据,波特率为,

40、可以收发数据,波特率为2400b/s2400b/s,晶振频率,晶振频率12MHz12MHz。 利用串行口进行双机通信,实现用甲机利用串行口进行双机通信,实现用甲机P2P2口的开关控制乙机口的开关控制乙机P0P0口连接的口连接的8 8个发光二级管的亮灭。用已机个发光二级管的亮灭。用已机P2P2口的开关控制甲机口的开关控制甲机P0P0口连接的口连接的8 8个发光二级管的亮灭。要求:发送查询,接收中断。个发光二级管的亮灭。要求:发送查询,接收中断。双机通信原理图串行口初始化过程如下串行口初始化过程如下: : v确定确定T1T1的工作方式的工作方式-编程编程TMODTMOD寄存器。寄存器。v计算计算T

41、1T1的初值的初值-装载装载TH1TH1、TL1TL1。v启动启动T1-TR1T1-TR1置位。置位。v确定串口的工作方式确定串口的工作方式-编程编程SCONSCON寄存器。寄存器。 M0M1C/TGATEM0M1C/TGATED0D1D2D3D4D5D6D7TMODSM0SM1SM2RENTB8RB8TIRI 晶振频率晶振频率12MHz,串行口工作于方式串行口工作于方式1,波特率为,波特率为2400b/s。1. 甲乙机通信程序甲乙机通信程序#include void main() TMOD=0 x20; /设置定时器设置定时器1的工作方式为方式的工作方式为方式2 TH1=0 xf3; /设置

42、串行口波特率为设置串行口波特率为2400b/s TL1=0 xf3; PCON=0 x00; /SMOD=0 SCON=0 x50; /设置串行口的工作方式为方式设置串行口的工作方式为方式1,允许接收,允许接收 TR1=1; EA=1; ES=1; 波特率(b/s)0晶振(MHz)T1方式2初值SMOD=0误差%SMOD=1误差%1200120 xE60.160 xCC0.162400120 xF30.160 xE60.164800120 xF9-6.990 xF30.169600120 xFD8.510 xF9-6.9919200120 xFD8.51 while(1) SBUF=P2; /

43、将将P2口开关状态发送给对方单片机口开关状态发送给对方单片机 while(!TI); TI=0; void serial() interrupt 4 EA=0; if(RI=1) RI=0; P0=SBUF; /从对方机接收过来的从对方机接收过来的P2状态值送给本机状态值送给本机P0口口 EA=1;课堂练习:课堂练习:1.PC机键盘输入机键盘输入11H命令,发送给单片机;单片机接收到命令,发送给单片机;单片机接收到PC发发来的命令后,使来的命令后,使P1口的灯亮口的灯亮1s,再发送,再发送11H命令作为应答信号。命令作为应答信号。2.PC机键盘输入机键盘输入22H命令,发送给单片机;单片机接收

44、到命令,发送给单片机;单片机接收到PC发来的命令后;发来的命令后;使使P1口的灯灭口的灯灭1s,并回送,并回送22H命令作为应答信号。命令作为应答信号。3.设置主、从机的波特率为设置主、从机的波特率为4800b/s;工作方式;工作方式1,晶振频率,晶振频率12MHz。ser_flashled_fing.hex#include void delayms(unsigned int t) unsigned int i,j; for(i=0;it;i+) for(j=0;j120;j+);void main() TMOD=0 x20; /设置定时器设置定时器1的工作方式为方式的工作方式为方式2 TH1

45、=0 xf3; /设置串行口波特率为设置串行口波特率为4800b/s TL1=0 xf3; SCON=0 x50; /设置串行口的工作方式为方式设置串行口的工作方式为方式1,允许接收,允许接收 PCON=0 x80; /SMOD=1 TR1=1;单片机通信程序(查询方式)单片机通信程序(查询方式) while(1) while(RI=0); RI=0; if(SBUF=0 x11) SBUF=0 x11; while(!TI); /查询发送是否完毕查询发送是否完毕 TI=0; /发送成功,发送成功,TI由软件清零由软件清零 P1=0 x00; delayms(1000); if(SBUF=0 x22) SBUF=0 x22; while(!TI); /查询发送是否完毕查询发送是否完毕 TI=0; /发送成功,发送成功,TI由软件清零由软件清零 P1=0 xff; delayms(1000); ST CLKEOCD0D7IN0IN7ABCALE八位转换器A/D三态输出锁存器VCCGNDOEVR(+)VR(-)38地址锁存与译码八路模拟量开关.CLK:时钟信号,可由单片机ALE信号分频

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论