《单片机原理》PPT课件.ppt

上传人:w****2 文档编号:14694525 上传时间:2020-07-28 格式:PPT 页数:59 大小:598KB
收藏 版权申诉 举报 下载
《单片机原理》PPT课件.ppt_第1页
第1页 / 共59页
《单片机原理》PPT课件.ppt_第2页
第2页 / 共59页
《单片机原理》PPT课件.ppt_第3页
第3页 / 共59页
资源描述:

《《单片机原理》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《单片机原理》PPT课件.ppt(59页珍藏版)》请在装配图网上搜索。

1、吴定允 ,第5章 单片机内部功能的应用实例,5.1 I/O端口的应用实例,第5章 单片机内部功能的应用实例,P1.7P1.4驱动负载,P1.3P1.0输入K0K3状态 。 1输出控制 首先P1.7P1.4均输出高电平,各灯均灭;然后从P1.4开始依次轮流输出0,控制各灯轮流点亮,其间隔时间为1秒钟,最后使4个灯全暗再全亮,延时一段时间后又重新不断循环。实现上述功能的 控制程序,5.1.1 用P1口作基本输入/输出口控制,图5-1,如下,下一节,吴定允 ,第5章 单片机内部功能的应用实例,2输入开关数据控制 读K0K3状态,送P1.7P1.4驱动亮或灭,控制程序如下: START: MOV A,

2、 #0FFH MOV P1, A ;使4个灯全灭 MOV A, P1 ;读入开关状态 SWAP A ;读低4位交换到高4位 MOV P1, A ;输出驱动相应灯亮 ACALL DELAY ;延时 SJMP START ;循环读入 外部有扩展存储时,P0口用作低8位地址/数据口;P1口仍可作通用I/O口;P2口作通用I/O口(外存256)或作高8位专用地址口( 256外存64K);P3口工作于第二功能的输入/输出。,吴定允 ,5.1.2 用I/O端口直接控制LED,第5章 单片机内部功能的应用实例,若使用P1.0P1.7控制LED(共阴)的段选位,用P3.0P3.3分别控制4个LED的位选,电路

3、连接如 所示。,编程在四个LED上交叉轮流显示22和88字符,用LED0、LED1为一组,显示内容相同;LED2、LED3为一组,显示内容相同,两组每隔1秒钟轮流交叉显示。设LED为共阴极,控制程序,图5-2,如下,吴定允 ,第5章 单片机内部功能的应用实例,5.1.3 编码拨盘预置输入电路,8421拨盘的结构原理见 所示。,拨盘的工作原理,当要置入09的数时,对应的8421位开关与公共控制端A接通,8421引脚将输出相应的数。BCD码拨盘与单片机的接口见 所示,其中二极管隔离作用,为防止拨盘之间的窜扰。,试编程读入4#1#BCD拨盘置入的数据,并将读入的数据存入片内RAM的40H43H单元中

4、,其程序,图5-3,图5-4,如下,吴定允 ,5.1.4 交通信号灯控制,第5章 单片机内部功能的应用实例,用I/O口直接控制交通灯,其控制电路如 所示。 交通信号灯的控制方法如 所示。,图5-5,图5-6,当东西方向通车时绿灯亮,而南北方向红灯亮;当通车的时间到后,东西方向的绿灯灭,而黄灯亮,黄灯闪烁若干次后由东西方向切换到南北方向通车。此时东西方向黄灯灭,而红灯亮,南北方向红灯灭,而绿灯亮,南北方向开始通车。通车时间到后,南北方向绿灯灭,黄灯闪烁若干次后由南北方向切换到东西方向,南北方向黄灯灭,红灯亮;而东西方向红灯灭,绿灯亮如此不断循环。其控制,程序如下,吴定允 ,5.2.1 定时计数器

5、门控位的应用,第5章 单片机内部功能的应用实例,5.2 定时计数及中断功能的应用实例,例1. 一个外部脉冲高电平的宽度小于65536个机器周期,将此脉冲信号接到89C51的INT1(P3.3)引脚上,作为T1的门控启动信号,试测其正脉冲的宽度。已知fosc=12MHz,将所测得的高8位值存入片内41H,低8位存入40H单元中。,程序如下,上一节,下一节,吴定允 ,5.2.2 定时/计数功能的综合应用举例,第5章 单片机内部功能的应用实例,例2试用89C51定时器0作外部工件计数值,外部工作信号由T0端引入,T1作定时器,每隔一秒钟检测一次T0中的计数值,当检测到100个工件数时,使P1.0端口

6、输出信号变反,程序不断循环控制P1.0的输出,设fosc=12MHz。 模式字:00010110=16H T0计数:X0=256-100=156 T1定时:X1=65536-(50*12*1000)/12=3CB0H R7软件计数:R7=1*1000/50=20,程序如下,吴定允 ,5.2.3 实时时钟中断,第5章 单片机内部功能的应用实例,T1定时加软件计数实现实时时钟控制。 用T1定时50ms,工作于模式1,设fosc=12MHz,设置软件计数单元: 20H单元为秒计数,计满20次为1秒钟; 21H单元为分计数,计满60次为1分钟; 22H单元为时计数,计满60次为1小时; 23H单元为日

7、计数,计满24次为1日;然后程序不断循环。,程序如下,吴定允 ,5.2.4 航标灯控制,第5章 单片机内部功能的应用实例,(1)航标灯在黑夜应能定时闪闪发光,设定时间隔为2s,即亮2s,熄灭2s周期循环进行; (2)当白天到来时,航标灯应熄灭,停止定时器工作。,解: 方案一 (1)航标灯的控制电路见 ;89C51定时的启停控制信号由INT0来控制。 (2)采用T0定时加软件计数的方法实现定时2s钟。 (3)可以用如图5-7所示的光敏三极管来区分白天与黑夜。,程序如下,图5-7,吴定允 ,第5章 单片机内部功能的应用实例,方案二 将光敏管放大电路的输出端仍接INT0引脚作为T0的门控信号,此时T

8、0的门控位应设置为1。电路中去掉非门,使INT0为高时触发T0定时器启动,否则停止T0工作。,程序如下,吴定允 ,5.3.1 用单片机串行通信口扩展并行输入/输出口,第5章 单片机内部功能的应用实例,5.3 单片机串行通信口的应用实例,是利用3根I/O口线扩展一个8位的并行输入口和一个8位的并行输出口的实用电路。用并行输入串行输出移位寄存器CD4014(类似74LS165)作并行开关状态的输入口;用串行输入并行输出移位寄存CD4094(类似74LS164)作显示输出口。编程读入开关状态存入片内RAM的40H单元中,并同时输出到LED上显示出来。,程序如下,图5-8,上一节,吴定允 ,5.3.2

9、 用单片机串行通信口作异步通信接口,第5章 单片机内部功能的应用实例,1. 用串行口发送带奇校验的数据块 编程从片内RAM 20H3FH取出ASCII码数据,在最高位上加奇偶校验位后由串行口发送,采用8位数据异步通信,串行口采用方式1发送,用T2作波特率发生器,设波特为1200波特,fosc=12MHz,12时钟模式。,解题思路及程序如下,2. 用串行口接收带奇偶校验位的数据块,程序如下,吴定允 ,5.3.3 用单片机串行通信口作多机通信接口,第5章 单片机内部功能的应用实例,单片机串行口多机通信的几条简单通信协议:,(1)系统中允许接有255台从机,地址分别为00HFFH。,(2)地址FFH

10、是对所有从机都起作用的一条控制命令:该命令使各从机恢复SM2=1的状态。,(3)主机发送的控制命令代码为 00H:要求从机接收数据块; 01H:要求从机发送数据块;其他:非法命令,(4) 数据块长度:16个字节;,吴定允 ,第5章 单片机内部功能的应用实例,串行口 , 是多机通信程序流程图,通信程序,图5-9,(5) 从机状态字格式为:,吴定允 ,AU3: MOVX A,DPTR MOV R0,A INC R0 INC DPTR DJNZ R2,AU3 MOV DPTR,#9000H MOV R0,#50H MOV R2,#10H AU4: MOV A,R0 MOVX DPTR,A INC D

11、PTR INC R0 DJNZ R2,AU4 MOV 3EH,#1AH MOV 3DH,#1AH MOV 3CH,#1AH MOV 3BH,#1AH MOV 3AH,#0EH MOV 39H,#0DH HERE: LCALL 0026H SJMP HERE END,数据传送实验程序CAS02.ASM ORG 8000H LJMP MAIN ORG 8030H MAIN: MOV R0,#40H MOV R2,#10H CLR A AU1: MOV R0,A INC R0 ADD A,#2 DJNZ R2,AU1 MOV R0,#40H MOV DPTR,#7E00H MOV R2,#10H A

12、U2: MOV A,R0 MOVX DPTR,A INC R0 INC DPTR DJNZ R2,AU2 MOV R0,#50H MOV DPTR,#7E00H MOV R2,#10H,吴定允 ,定时计数器程序设计 CAS03.ASM ORG 8000H CART: LJMP CAIN ORG 800BH LJMP CIT0 ORG 8030H CAIN: MOV SP,#60H MOV R0,#39H MOV R7,#06H CL1: MOV R0,#00H INC R0 DJNZ R7,CL1 MOV TMOD,#01H MOV TL0,#00H MOV TH0,#00H SETB TR0

13、 MOV IE,#82H MOV 30H,#08H CL0: LCALL 0026H LJMP CL0,CIT0: PUSH PSW PUSH ACC SETB PSW.3 MOV TH0,#00H MOV TL0,#00H MOV A,30H DEC A MOV 30H,A JNZ CRET MOV 30H,#08H MOV R0,#3AH LCALL CAAD MOV A,R2 XRL A,#60H JNZ CRET LCALL CLR0 MOV R0,#3CH LCALL CAAD,吴定允 ,MOV A,R2 XRL A,#60H JNZ CRET LCALL CLR0 MOV R0,#

14、3EH LCALL CAAD MOV A,R2 XRL A,#24H JNZ CRET LCALL CLR0 CRET: POP ACC POP PSW RETI CAAD: MOV A,R0 DEC R0 SWAP A ORL A,R0,ADD A,#01H DA A MOV R2,A ANL A,#0FH MOV R0,A MOV A,R2 INC R0 ANL A,#0F0H SWAP A MOV R0,A RET CLR0: CLR A MOV R0,A DEC R0 MOV R0,A RET END,吴定允 ,实验四 数字电子钟的实现,编程实现:分别从EICE51上键入或从主机键盘上

15、输入时间初值。用T0定时256s,加软件计数4000次实现 1秒定时,对实时时钟计数器进行计数,并将时钟值实时地分另送EICE51和主机显示器上输出显示。 相关说明: 1、相关位的功能: 位0:键入(或发送)两位数结束标志位; 位1:输出两位数送EICE51显示结束标志位; 位2:EICE51键入时间初值(6位)结束标志位;,位F0:1秒定时到标志位。 2、相关单元的功能: 30H、31H、32H:时间初值存储和时、分、秒计数器; 36H、37H:1秒定时的软件计数器(250*16=4000); 39H3EH:显示存储单元; 7F03H:8155的端口C,定义为EICE51的键入口。 3、相关

16、ASCII码: 0DH:回车; 0AH:换行; 3AH:“:”冒号(分隔符); 8HH:退格; 30H39H:数字09的ASCII码。,吴定允 ,电子钟的实现 CAS9254.ASM (定时、中断、串行口综合实验) ORG8000H COCK:SJMPCXT4 ORG800BH YTF0: DJNZ 36H,FT4R MOV 36H,#250 DJNZ 37H,FT4R MOV 37H,#16 SETB F0 FT4R:RETI CXT4:MOVSP,#60H MOV R7,#6 MOV R0,#39H CELL: MOV R0,A INC R0 DJNZ R7,CELL MOV TMOD,#

17、022H MOV SCON,#0DAH MOV TCON,#50H,WINT: MOV DPTR,#7F03H MOVX A,DPTR CPL A ANL A,#0FH JNZ KBIN ;6位初值小键盘输入 JNB RI,WINT ;主机输入显示处理 CLR 2 CLR RI ACALL YOUT ;主机提示显示 DBINPUT TIME: ,0 ;BP2 GT41: MOV R0,#30H CLR 0 GT42: JNB RI,GT42 ;主机实现09的输入 CLR RI MOV A,SBUF CJNE A,#0DH,GT43 ;0DH回车 HT4W: JNB TI,HT4W CLR TI

18、 MOV SBUF,#0AH ;0AH换行 SJMP GT44 GT43: CJNE A,#3AH,GT46 ;主机输入9 GT45: JNB TI,GT45 ;3AH : CLR TI MOV SBUF,A,吴定允 ,SJMP GT42 GT46: JNC CERR CJNE A,#30H,GT47 GT47: JC CERR ;主机输入0 GT49: JNB TI,GT49 CLRTI MOV SBUF,A SUBB A,#30H JBC0,GT4A SETB 0 SWAP A MOV R0,A SJMP GT42 GT4A: XCHD A,R0 INCR0 SJMP GT42 CERR:

19、 MOV SBUF,#08 ;08退格 QRR1: SJMP GT42 GT44: CJNE R0,#33H,QRR1 BGIN: MOV IE,#82H ;BP3 MOV 36H,#250 MOV 37H,#16,GT4L: JBC F0,GT4P LCALL 0026H SJMP GT4L GT4P: ACALL CCNT ;计数并刷新显示 JB 2,$+5 ;3字节 ACALL JOUT ;2字节 SJMP GT4L KBIN: MOV R0,#3EH ;BP1 MOV R1,#30H MOV R7,#6 CLR 0 HIL: SETB PSW.3 LCALL 0036H CLR PSW

20、.3 MOV R0,A DEC R0 JBC 0,HIL1 SETB 0 SWAP A MOV R1,A HIL2: DJNZ R7,HIL SETB 2,吴定允 ,SJMP BGIN HIL1: XCHD A,R1 INC R1 SJMP HIL2 CCNT: MOV R0,#32H ;BP4 ACALL KCT ;BCD加1送存 CJNE A,#60H,CNTR ;6位送显 ACALL KCX CJNE A,#60H,CNTR ACALL KCX CJNE A,#24H,CNTR ACALL KCX CNTR:MOV R1,#39H MOV R0,#32H MOV R7,#3 CLR1 E

21、DTR:JBC 1,ERT2 MOV A,R0 ANL A,#0FH MOV R1,A INCR1 SETB 1 SJMP EDTR,ERT2:MOV A,R0 ANL A,#0F0H SWAP A MOV R1,A INC R1 DEC R0 DJNZ R7,EDTR RET JOUT:ACALLYOUT DBIT IS : ,0 MOV R7,#3 MOV R0,#30H CLR 0 XT3:MOV A,R0 ;发主机显示 XT1:JNB TI,XT1 CLR TI JBC 0,XT2 SWAP A ANL A,#0FH ADD A,#30H MOV SBUF,A,吴定允 ,SETB0 S

22、JMPXT3 XT2:ANLA,#0FH ADD A,#30H MOVSBUF,A DJNZR7,XT4 XTL:JNBTI,XTL CLR TI MOVSBUF,#0DH RET XT4:JNBTI,XT4 CLR TI MOVSBUF,#3AH INCR0 SJMPXT3 YOUT:POPDPH POP DPL SETBTI,JT0:CLRA MOVCA,A+DPTR INC DPTR CJNEA,#0,JT1 PUSHDPL PUSHDPH RET JT1:JNBTI,JT1 CLR TI MOVSBUF,A SJMPJT0 KCX:CLRA MOVR0,A DEC R0 KCT:MOV

23、A,R0 ADD A,#1 DA A MOVR0,A RET END;,吴定允 ,习题5,第5章 单片机内部功能的应用实例,1试用89C51的P0口外接8个LED,P1口和P2口外接8个BCD码拨盘。请画出该功能要求的连接电路图,并编程依次读入8个BCD拨盘数据存入片内40H47H单元中,然后依次取出送P0中显示,每次同时显示2个相邻的数据。 2利用89C51单片机定时器的门控位测量某正脉冲高电平的宽度。已知正脉冲宽度小于10ms,fosc=6MHz.试编程测量脉宽,并把测得的结果转换为BCD码存入片内50H开始的连接单元,十位和个位存50H单元中。,吴定允 ,1试用89C51的P0口外接8个

24、LED,P1口和P2口外接8个BCD码拨盘。请画出该功能要求的连接电路图,并编程依次读入8个BCD拨盘数据存入片内40H47H单元中,然后依次取出送P0中显示,每次同时显示2个相邻的数据,方案一: 8个拨盘分别接P2.0P2.7作为输入数据及P1.0P1.3作为拨盘的片选信号,LED发光二极管负极接P0.0P0.7。 RDIN:MOV R7, #08 MOV R0, #40H MOV A, #0FEH RDIN1:MOV R2, A MOV P2, A MOV A, P1 CPL A ANL A, #0FH MOV R0, A INC R0 MOV A, R2,RL A DJNZ R7, RD

25、IN1 MOV R7, #04H MOV R0, #40H OUTRUT:MOV A, R0 SWAP A INC R0 XCHD A, R0 CPL A MOV P0, A CALL DEALY INC R0 DJNZ R7, OUTRUT AJMP RDIN END,吴定允 ,方案二: 8个拨盘分别接P2.0P2.7及P1.0P1.3,8只数码管的段码由P0.0P0.7输出, 位选信号由P3.0P3.7输出,读取拨盘的程序同方法一,其输出显示程序如下:,START:MOV A,#0FEH MOV P3,A MOV R2,A MOV DPTR,#TAB MOV R0,#40H SETB C

26、LP: MOV A,R0 MOVC A,A+DPTR MOV P0,A CALL DELAY MOV A,R2 RLC A MOV R2,A MOV P3,A INC R0,LP1:MOV A,R0 MOVC A,A+DPTR MOV P0,A CALL DELAY MOV A,R2 RLC A MOV R2,A MOV P3,A JNB C,LP2 INC R0 AJMP LP LP2:START 或 RET TAB:DB 3FH,06H,5BH,4FH,68H DB 6DH,7DH,07H,7FH,6FH (共阴LED显示段码),吴定允 ,3 试用中断技术设计一个频闪电路,用以控制P1口上

27、的8个彩灯闪烁,其闪烁频率为50Hz,设fosc=6MHz。,ORG 0000H AJMP STAR ORG 000BH AJMP INTR0 ORG 2000H STAR:MOV TMOD, #01H MOV TL0, #78H MOV TH0, #0ECH MOV IE, #82H SETB TR0 LOOP: SJMP $,INTR0: MOV TL0, #78H MOV TH0, #0ECH MOV A, P1 CPL A MOV P1, A RETI,吴定允 ,第5章 单片机内部功能的应用实例,3 试用中断技术设计一个频闪电路,用以控制P1口上的8个彩灯闪烁,其闪烁频率为50Hz,设

28、fosc=6MHz。 4用89C51串行口设计一个4位静态LCD的接口电路,画出电路连接图并编程每隔1秒钟交替显示“GOOD”,“YOUR”。 5设计一个89C51单片机的双机通信系统,试编程将甲机片外8000H9000H的数据块通过串行口发送到乙机片外RAM的3000H4000H单元中去。要求接收和发送均采用中断方式。,吴定允 ,第5章 单片机内部功能的应用实例,START:MOV A, #0FFH MOV P1, A ;P1口输出“全1”,使灯均灭 ANL A, #0EFH ;指向P1.4位的灯,使其点亮 SETB C ;进位置1 LOOP: MOV P1, A ;控制相应位的灯亮 ACA

29、LL DELAY1s ;延时1s RLC A ;指向下一个灯 JC LOOP ;到第4个灯吗?若C=1转 MOV P1, A ;到了使4个灯全灭 ACALL DELAY ;延时 CLR P1.4 ;使4个灯均亮 CLR P1.5 CLR P1.6 CLR P1.7 ACALL DELAY ;延时 AJMP START ;重新循环,吴定允 ,第5章 单片机内部功能的应用实例,图5-1 I/O控制电路,吴定允 ,第5章 单片机内部功能的应用实例,图5-2 LED与89C51连接图,吴定允 ,第5章 单片机内部功能的应用实例,START: MOV A, #0FFH MOV P3, A ;使4个LED

30、均不亮 LP0: MOV R7, #50 ;循环次数 LP1: MOV P1, #5BH ;2字符的段码5BH输出 MOV P3, #0FCH ;选中LED0、LED1 ACALL DELAY10ms ;延时10ms MOV P1, 7FH ;8字符的段码7FH输出 MOV P3, 0F3H ;选中LED2、LED3 ACALL DELAY10ms ;延时10ms DJNZ R7, LP1 ;循环显示 MOV R7, #50 LP2: MOV P1, #7FH ;8字符的段码 MOV P3, #0FCH ;LED0、LED1显示8字符 ACALL DELAY10ms ;延时 MOV P1, #

31、5BH ;2字符的段码 MOV P3, #0F3H ;LED2、LED3显示2字符 ACALL DELAY10ms ;延时 DJNZ R7, LP2 AJMP LP0 ;重新循环,吴定允 ,第5章 单片机内部功能的应用实例,图5-3 拨盘结构图 5-4 BCD拨盘与89C51接口图,吴定允 ,第5章 单片机内部功能的应用实例,RDIN: MOV R7, #04H ;读入次数计数 MOV R0,40H ;片内RAM的首址送R0 MOV A, #0EFH ;选通1#拨盘,使A1=0 RDIN1: MOV R2, A ;暂存R2中 MOV P1, A ;输出位选控制信号 MOV A, P1 ;读入拨

32、盘数据 CPL A ;取反使之为高电平有效 ANL A, #0FH ;屏蔽高4位 MOV R0,A ;存入片内RAM INC R0 ;指向下一个RAM单元 MOV A, R2 RL A ;指向下一个拨盘 DJNZ R7, RDIN1 ;4个拨盘未读完转 RET ;读完返回,吴定允 ,第5章 单片机内部功能的应用实例,图5-5 单片机与交通灯的接口 5-6 四个路口信号灯示意图,吴定允 ,第5章 单片机内部功能的应用实例,START: MOV R7, #0AH ;黄灯闪烁次数 MOV A, #00H MOV P1, A ;灯全灭 MOV P0, A LP: SETB P0.0 ;南北红灯亮 SE

33、TB P0.1 SETB P1.2 ;东西绿灯亮 SETB P1.3 LCALL DELAY50s ;延时50s CLR P1.2 ;东西绿灯灭 CLR P1.3 LP1: SETB P0.6 ;东西黄灯亮 SETB P0.7 LCALL DELAY ;延时 CLR P0.6 ;东西黄灯灭 CLR P0.7 LCALL DELAY DJNZ R7, LP1 ;黄灯闪烁10次未到转,吴定允 ,第5章 单片机内部功能的应用实例,MOV R7, #0AH SETB P0.2 ;东西红灯亮 SETB P0.3 CLR P0.0 ;南北红灯灭 CLR P0.1 SETB P1.0 ;南北绿灯亮 SETB

34、 P1.1 LCALL DELAY50s ;延时50s CLR P1.0 ;南北绿灯灭 CLR P1.1 LP2: SETB P0.4 ;南北黄灯亮 SETB P0.5 LCALL DELAY CLR P0.4 ;南北黄灯灭 CLR P0.5 LCALL DELAY DJNZ R7, LP2 ;黄灯闪烁10次未到转 MOV R7, #0AH AJMP LP ;重新循环,吴定允 ,第5章 单片机内部功能的应用实例,MOV TMOD, #90H ;T1定时,模式1,GATE=1 MOV TL1, #00H ;T1从0000H开始计数 MOV TH1, #00H MOV R0, #40H JB P3

35、.3, $ ;等待P3.3变低 SETB TR1 ;P3.3变低,准备启动T1 JNB P3.3, $ ;等待P3.3变高,启动计数 JB P3.3, $ ;等待P3.3再次变低 CLR TR1 ;停止计数 MOV R0, TL1 ;存计数值 INC R0 MOV R0, TH1,吴定允 ,第5章 单片机内部功能的应用实例,MOV TMOD,#16H ;T1模式1,定时,T0模式2,计数 MOV TH1, #3CH ;T1计数初值,定时50ms MOV TL1, #0B0H MOV TH0, #156 ;T0计数初值,计数100次 MOV TL0, #156 MOV R7, 20 ;R7软件计

36、数20次 CLR EA ;屏蔽所有中断(关CPU中断) SETB TR1 ;启动T1 SETB TR0 ;启动T0 LOOP:JBC TF1, LQ ;T1溢出转 SJMP LOOP ;否等待 LQ: MOV TH1, #3CH ;重装T1计数初值 MOV TL1, #0B0H DJNZ R7, LOOP ;1秒未到转 MOV R7, #20 ;1秒到重装软件计数值 LP: JNB TF0, LOOP ;T0未溢出转 CPL P1.0 ;100个工件计满P1.0输出变反 SJMP LOOP ;返回重复循环,吴定允 ,第5章 单片机内部功能的应用实例,主程序如下: ORG 0000H SJMP

37、START ORG 001BH AJMP SERVE ;T1中断服务程序入口 ORG 0100H START:MOV TMOD,#10H ;T1定时,模式1 MOV TH1, #3CH ;T1计数初值 MOV TL1, #0B0H MOV IE, #88H ;CPU T1开中断 SETB TR1 ;启动T1 MOV 20H, #20 ;1秒计数值 MOV 21H, #60 ;1分计数值 MOV 22H, #60 ;1小时计数值 MOV 23H, #24 ;1日计数值 LOOP: SJMP $ ;等待T1 50ms到中断 SJMP LOOP,吴定允 ,第5章 单片机内部功能的应用实例,;T1中断

38、服务程序(由001BH转来) SERVE:MOV TH1, #3CH ;T1重赋计数初值 MOV TL1, #0B0H DJNZ 20H, EXIT ;1秒未到转 MOV 20H, #20 ;1秒到重写计数值 LCALL DISP ;可加入输出显示DISP DJNZ 21H, EXIT ;1分未到转 MOV 21H, #60 ;1分到重写计数值 DJNZ 22H, EXIT ;1小时未到转 MOV 22H, #60 ;1小时到重写计数值 DJNZ 23H, EXIT ;1日未到转 MOV 23H, 24 ;1日到重写计数值 EXIT: MOV IE, #88H RETI,吴定允 ,第5章 单片

39、机内部功能的应用实例,图5-7 航标灯控制电路,吴定允 ,第5章 单片机内部功能的应用实例,主程序:(中断嵌套加软件查询) ORG 0000H AJMP MAIN ORG 0003H ;外部中断0入口地址 AJMP WBINT ORG 000BH ;T0中断入口地址 AJMP T0INT ORG 0100H MAIN: MOV SP,#30H ;设置堆栈指针 CLR P1.7 ;设灯亮的初态为灭 CLR IT0 ;外部中断0为电平触发方式 CLR PX0 ;外部中断0为低优先级 SETB EX0 ;允许外部中断0中断 SETB EA ;允许CPU中断 HERE: AJMP HERE ;等待外部

40、中断请求,吴定允 ,第5章 单片机内部功能的应用实例,外部中断0中断服务程序(由0003H转来) WBINT:MOV TMOD,#01H ;T0定时,模式1 MOV TL0,#0B0H ;T0计数初值 MOV TH0,#3CH SETB PT0 ;设T0为高优先级中断 SETB TR0 ;启动T0 SETB ET0 ;T0开中断 MOV R7,#40 ;软件计数值 HERE1:JNB P3.2,HERE1;查询引脚电平,为低等待T0中断 CLR ET0 ;为高禁止T0中断 CLR TR0 ;关T0 CLR P1.7 ;熄灯 RETI ;返回主程序 定时器0中断服务程序(由000BH转来) T0

41、INT:MOV TL0,#0B0H ;重赋T0初值 MOV TH0,#3CH DJNZ R7,EXIT ;软件计数为0吗? MOV R7,#40 ;计数已到,重赋初值 CPL P1.7 ;输出取反控制灯亮或灭 EXIT: RETI ;中断返回 END,吴定允 ,第5章 单片机内部功能的应用实例,主程序: ORG 0000H AJMP MAIN ORG 000BH AJMP T0INT ORG 0100H MAIN: MOV SP,#30H GAT0: CLR P1.7 MOV TMOD,#09H ;T0定时,模式1,GATE=1 MOV TL0,#0B0H ;T0赋计数初值 MOV TH0,#

42、3CH MOV R7,#40 ;软件计数初值 HERE1:JNB P3.2,HERE1 ;黑夜降临了吗? SETB TR0 ;到了启动T0 SETB ET0 ;允许T0中断 SETB EA ;CPU开中断,吴定允 ,第5章 单片机内部功能的应用实例,HERE2: JB P3.2,HERE2 ;白天到吗? CLR TR0 ;到了关T0 CLR ET0 ;禁止T0中断 CLR EA ;关CPU中断 AJMP GAT0 定时器0中断服务程序(由000BH转来) T0INT:MOV TL0,#0B0H ;T0重赋初值 MOV TH0,#3CH DJNZ R7,EXIT ;软件计数到了吗? MOV R7

43、,#40 ;重赋软件计数初值 CPL P1.7 ;输出控灯亮与灭 EXIT: RETI END,吴定允 ,第5章 单片机内部功能的应用实例,图5-8 利用串行口扩展I/O口,吴定允 ,第5章 单片机内部功能的应用实例,RX0:SETB P1.0 ;允许并行输入开关数据 CLR P1.0 ;允许串行移位 MOV SCON, #10H ;串行口方式0,REN=1允许接收数据 JNB RI, $ ;等待一帧数据接收结束 CLR RI ;接收结束,清RI中断标志 MOV A, SBUF ;读取接收到的数据 MOV 40H, A ;存入片内RAM中 TX0:MOV SCON, #00H ;设串行口方式0

44、,发送数 MOV SBUF,A ;启动串行口发送数据 JNB TI, $ ;等待一帧发送结束 CLR TI ;清TI中断标志 SETB P1.0 ;数据选通输出显示 RX0为读入开关状态的接收数据程序段,TX0为输出数据显示的程序段。,吴定允 ,第5章 单片机内部功能的应用实例,解: T2波特率发生器,波特率不增倍SMOD=0,计数初值X为: X=65536-(fosc/(n波特率)=65536-(fosc/(32波特率)) =65536-(12106/(321200)=65224=FEC8H 注:n=16(为6时钟模式);n=32(为12时钟模式)主程序: MOV T2CON,#32H ;T

45、2波特率,定时,RCLK=TCLK=1 MOV TL2,#0C8H ;T2计数初值 MOV TH2,#0FEH MOV RCAP2H,#0FEH ;同时装入捕获寄存器 MOV RCAP2L,#0C8H SETB TR2 ;启动T2 MOV SCON,#40H ;串口方式1 MOV PCON,#00H ;SMOD=0,波特率不增倍,吴定允 ,第5章 单片机内部功能的应用实例,MOV R0,#20H MOV R7,#32 LOOP: MOV A,R0 ;取发送的数据 CALL TXD ;调发送子程序 JC ERR ;传输出错处理 INC R0 DJNZ R7,LOOP ;未发送完重复 . ;串行口

46、发送子程序 TXD: MOV C,P ;设置奇校验位,P=1为奇校 CPL C MOV Acc.7,C ;数据最高位加上奇校位 MOV SBUF,A ;启动串行口发送过程 JNB TI,$ ;等待发送结束 CLR TI ;清发送中断标志 ERR: 出错处理程序(略),吴定允 ,第5章 单片机内部功能的应用实例,本例与上例相似,串行口接收器把接收到的32个字节数据存入片内RAM 20H3FH单元,波特率同上。若奇校验出错则将进位位置1。 主程序: MOV T2CON,#32H MOV TL2, #0C8H MOV TH2, #0FEH MOV RCAP2H,#0FEH MOV RCAP2L,#0

47、C8H SETB TR2 MOV R0, #20H MOV R7, #32 MOV PCON,#00H LOOP: CALL RXD ;调接收子程序 JC ERR MOV R0,A ;接收的数据存入片内RAM INC R0 DJNZ R7,LOOP,吴定允 ,第5章 单片机内部功能的应用实例,接收子程序: RXD: MOV SCON,#50H ;串行口方式1,REN=1允许接收 JNB RI,$ ;等待接收一帧数据 CLR RI MOV A,SBUF ;取一帧数据 MOV C,P CPL C ANL A,#7FH ;去掉奇校验位 RET ERR: 出错处理程序略,吴定允 ,第5章 单片机内部功

48、能的应用实例,1. 主机串行通信子程序: 入口参数:R2被寻址从机的地址;R3主机命令;R4数据块长度 R0主机发送的数据块首地址;R1主机接收的数据块首地址 MS10: MOV SCON,#0D8H ;串口方式3,允许接收,TB8=1 MS11: MOV A,R2 ;发送地址帧 MOV SBUF,A JNB RI,$ ;等待从机应答 CLR RI MOV A,SBUF XRL A,R2 ;判应答地址是否相符 JZ MS13 ;相同转发送命令 MS12: MOV SBUF,#0FFH ;不相同重新联络 SETB TB8 SJMP MS11 MS13: CLR TB8 ;地址符合,清地址标志 M

49、OV SBUF,R3 ;发送主机命令 JNB RI,$ ;等待从机应答 CLR RI MOV A,SBUF,吴定允 ,第5章 单片机内部功能的应用实例,JNB Acc.7,MS14 ;判命令是否出错 SJMP MS12 ;从机接收命令出错重新联络 MS14: CJNE R3,#00H,MS15 ;不是要求从机接收数据则转 JNB Acc.0,MS12 ;从机接收数据未准备好转重新联络 LPT: MOV SBUF,R0 ;主机发送数据块 JNB TI,$ ;等待发送一帧结束 CLR TI INC R0 DJNZ R4,LPT RET MS15: JNB Acc.1,MS12 ;从机发送数据准备好

50、吗? LPR: JNB RI,$ ;主机接收数据块 CLR RI MOV A,SBUF MOV R1,A INC R1 DJNZ R4,LPR RET,吴定允 ,第5章 单片机内部功能的应用实例,若主机向10号从机发送数据块,数据存入片内RAM的40H4FH单元中,则任务程序中调用上述子程序的方法是: . MOV R2,#0AH MOV R3,#01H MOV R4,#10H MOV R0,#40H LCALL MS10 . .,吴定允 ,第5章 单片机内部功能的应用实例,2. 从机串行通信的中断服务程序 从机背景程序片段如下: MOV SP,#1FH ;设置堆栈指针 MOV SCON,#0F

51、0H ;串口方式3,SM2=1 MOV 08H,#40H ;接收缓冲区首址送第一区工作寄存器R0 MOV 09H,#50H ;发送缓冲区首址送第一区R1 MOV 0AH,#10H ;发送接收字节数送R2 串行口中断服务程序(由0023H单元转来) SS10: CLR RI PUSH A ;保护现场 PUSH PSW SETB RS0 ;选第一区工作寄存器 CLR RS1 MOV A,SBUF XRL A,#SLAVE ;SLAVE为本从机地址 JZ SSI1,吴定允 ,第5章 单片机内部功能的应用实例,RE1: POP PSW POP A CLR RS0 RETI SSI1: CLR SM2

52、;地址相符,清SM2位 MOV SBUF,#SLAVE ;从机地址回送主机 JNB RI,$ ;等待接收一帧结束 CLR RI JNB RB8,SS12 ;是命令帧转 SETB SM2 ;是复位信号,SM2置1后返回 SJMP RE1 SS12: MOV A,SBUF ;命令分析 CJNE A,#01H,S0H ;是要求从机发送数据命令否? SJMP CMD1 S0: JZ CMD0 ;是要求从机接收数据吗? MOV SUBF,#80H ;非法命令,ERR位置1,吴定允 ,第5章 单片机内部功能的应用实例,SJMP RE1 SS13: JZ CMD0 CMD1: JB F0,SS14 ;F0为

53、发送准备就绪标志 MOV SBUF,#00H ;回答未准备就绪信号 SJMP RE1 SS14: MOV SBUF,#02H ;TRDY=1,发送准备就绪 CLR F0 LOOP1:MOV SBUF,R0 ;发送数据块 JNB TI,$ CLR TI INC R0 DJNZ R2,LOOP1 SETB SM2 ;发送完,SM2置1后返回 SJMP RE1,吴定允 ,第5章 单片机内部功能的应用实例,CMD0: JB PSW.1,SS15 ;PSW.1为接收准备就绪标志 MOV SBUF,#00H ;送回答未准备好信号 SJMP RE1 SS15: MOV SBUF,#01H ;RRDY=1接收准备就绪 CLR PSW.1 LOOP2:JNB RI,$ ;接收数据块 CLR RI MOV R1,SBUF INC R1 DJNZ R2,LOOP2 SETB SM2 ;接收完,SM2置1 SJMP RE1,吴定允 ,第5章 单片机内部功能的应用实例,图59 多机通信程序流程图,(a) 多机通信程序主机流程图,(b) 多机通信程序从机流程图,

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!