单片机fuxi2

上传人:zw****58 文档编号:54298978 上传时间:2018-09-10 格式:PPT 页数:23 大小:538KB
返回 下载 相关 举报
单片机fuxi2_第1页
第1页 / 共23页
单片机fuxi2_第2页
第2页 / 共23页
单片机fuxi2_第3页
第3页 / 共23页
单片机fuxi2_第4页
第4页 / 共23页
单片机fuxi2_第5页
第5页 / 共23页
点击查看更多>>
资源描述

《单片机fuxi2》由会员分享,可在线阅读,更多相关《单片机fuxi2(23页珍藏版)》请在金锄头文库上搜索。

1、2018/9/10,Email:,1,单片机原理及应用,主讲:覃业梅 中南林业科技大学涉外学院,2018/9/10,2,总结,第一章 51系列 第二章I/O口,CPU,存储器 第三章寻址方式,各类指令的格式、功能字节数、周期数 第四章子程序,查表程序,分支程序,循环程序,2018/9/10,3,第五章 1、中断TCON、SCON、IE、IP各中断源的入口地址、请求标志、撤消中断服务程序2、定时器/计数器TCON、TMODT0、T1的定时、计数初值,启动,溢出4种工作方式,2018/9/10,4,第六章1、 SCON、PCON发送、接收的SBUF,指令,完成标志4种工作方式的帧数据、波特率 2、

2、存储器的扩展:地址 3、I/O口扩展:8155 4、LED显示,键盘 5、A/D、D/A,2018/9/10,5,指令应用实例,【例1】 在程序存储器中有一平方表,从2000H单元开始存放,如图所示,试通过查表指令查找出6的平方。 解:采用DPTR作为基址寄存器的查表程序比较简单,查表范围大,也容易理解。只要预先使用一条16位数据传送指令,把表的首地址2000H送入DPTR,然后进行查表就可以了。相应的程序如下:MOV A,#6 ;设定备查的表项MOV DPTR,#2000H ;设置DPTR为表始址MOVC A,A+DPTR ;将A的平方值查表后送A如果需要查找其他数的平方,只需要将累加器A的

3、内容(变址)改一下即可。,2018/9/10,6,指令应用实例,【例2】 试编程计算5678H1234H的值,结果保存在R6、R5中。 解:减数和被减数都是16位二进制数,计算时要先进行低8位的减法,然后再进行高8位的减法,在进行低8位减法时,不需要考虑借位,所以要在减法指令之前将借位标志清0。程序如下:MOV A,#78H ;被减数低8位送累加器CLR C ;清进位标志位CYSUBB A,#34H ;减去减数MOV R5,A ;保存低8位MOV A,#56H ;被减数高8位送累加器SUBB A,#12H ;减去减数MOV R6,A ;保存高8位,2018/9/10,7,指令应用实例,【例3】

4、 拆字程序:在内部RAM 40H单元保存有以压缩BCD码表示的2位十进制数,编程将它们拆开,分别保存在内部RAM的41H、42H单元。解:程序如下:MOV A,40H ;压缩BCD码送累加器ANL A,#0FH ;高4位清0,保留低4位MOV 41H,A ;保存低4位BCD码MOV A,40H ;取数据MOV A,#0F0H ;低4位清0,保留高4位SWAP A ;高低位交换MOV 42H,A ;保存高4位BCD码,2018/9/10,8,指令应用实例,【例4】 设(SP)=30H,符号地址PROG1指向程序存储器的5678H单元,当前PC值为0123H。从0123H处执行指令“LCALL P

5、ROG1”,分析执行后PC、SP的值和相关存储器的内容。 解:执行过程为:(PC)+3=0123H+3=0126H。将PC内容压入堆栈:向(SP)+1=31H中压入26H,向(SP)+1=32H中压入01H,(SP)=33H。将PROG1=5678H送入PC,即(PC)=5678H。程序转向以5678H为首地址的子程序执行。最终执行结果是:(PC)=5678H、(SP)=33H、(31H)=26H、(32H)=01H。,2018/9/10,9,指令应用实例,【例5】 比较内部RAM中40H、41H两个单元中的数据大小,将大的数送至42H单元。 解:程序如下:MOV A,40H ;取第一个数CJ

6、NE A,41H,NEQU ;比较,不相等转移至NEQU处MOV 42H,40H ;相等, (40H)42HSJMP TOOFF ;完成,转移至结尾退出NEQU: JC LESS ;若CY=1,说明(40H)(41H)转移MOV 42H,40H ;(40H)(41H),(40H)40HSJMP TOOFF ;完成,转移至结尾退出LESS: MOV 42H,41H ;(40H)(41H),(41H)40H TOOFF: RET,2018/9/10,10,程序设计实例,【例1】 P1口做输出口,控制8盏灯(P1口输出低电平时灯被点亮),编程使灯按以下规律显示:同一时间只有两盏灯点亮,从P1.7、P

7、1.6控制的灯开始,每盏灯闪烁5次,再移向下两盏灯,同样闪烁5次,循环往复,延时时间1s。晶振频率6MHz。 解:主程序是双重循环程序,循环移位是外循环,灯闪烁5次是内循环,内循环程序不能与外循环程序交叉。延时1S采用三重循环程序。晶振频率为6MHz时,机器周期为2s,延时程序的延时时间计算方法如下:1+1+(1+(1+1+2)125+2)200+25+22s=1006036s=1.006036s,2018/9/10,11,4.3.2 循环程序设计实例,主程序:,2018/9/10,12,延时子程序:,2018/9/10,13,中断的应用实例,【例1】 P1口做输出口,控制八只灯(P1口输出低

8、电平时灯被点亮),利用手控单脉冲信号作为外部中断信号,控制八只灯按一定的规律循环点亮。解:手控单脉冲信号作为外部中断信号由INT0(P3.2)管脚输入,设置中断允许寄存器IE中的EA、EX0位为1;只有一个中断源可不设置优先级别;中断触发方式设为边沿触发,控制位IT0应设置为1。,2018/9/10,14,参考程序:,2018/9/10,15,T及应用实例,【例2】 在P1.0输出周期为1 ms(频率1kHz)的方波,采用定时器1方式0设计程序,晶振频率为12MHz。 解:根据题意,只要使P1.0每隔500s取反一次即可得到周期1 ms的方波,因而T1的定时时间为500s。用定时器1方式0时,

9、定时器/计数器方式寄存器TMOD高4位中的M1M0应取00;可设定为软件启动定时器,故GATE取0;因为用定时功能,C/T取0;定时器方式寄存器TMOD低4位为无关位,一般都取0,所以TMOD应为00H。晶振频率为12MHz,T机=12/fosc=12/(12106)=1s定时初值 X=213-T/T机=213-500/1=8192-500=7692=1E0CH=1111000001100B因TL1的高3位未用,对计算出的定时初值X要进行修正,即在低5位前插入3个0,修正后的定时初值 X=1111000000001100B=F00CH,2018/9/10,16,6.3.2 方式0及应用实例,参

10、考程序:,2018/9/10,17,串行口应用举例,【例3】设甲乙机以串行方式1进行数据传送,fosc=11.0592MHz,波特率为1200b/s。甲机发送的16个数据存在内RAM 40H4FH单元中,乙机接收后存在内RAM 50H为首地址的区域中。,T1初值 = 256 - = 232 = E8H,32,121200,解: 串行方式1波特率取决于T1溢出率(设SMOD=0), 计算T1定时初值:,11059200,20,2018/9/10,18,甲机发送子程序:,MOV TMOD,#20H ;置T1定时器工作方式2MOV TL1,#0E8H ;置T1计数初值MOV TH1,#0E8H ;置

11、T1计数重装值CLR ET1 ;禁止T1中断SETB TR1 ;T1启动MOV SCON,#40H ;置串行方式1,禁止接收MOV PCON,#00H ;置SMOD=0(SMOD不能位操作) CLR ES ;禁止串行中断MOV R0,#40H ;置发送数据区首地址MOV R2,#16 ;置发送数据长度 MOV A,R0 ;读一个数据MOV SBUF,A ;发送JNB TI,$ ;等待一帧数据发送完毕CLR TI ;清发送中断标志INC R0 ;指向下一字节单元DJNZ R2,TRSA ;判16个数据发完否?未完继续RET ;,TXDA:,TRSA:,2018/9/10,19,MOV TMOD,

12、#20H ;置T1定时器工作方式2MOV TL1,#0E8H ;置T1计数初值MOV TH1,#0E8H ;置T1计数重装值CLR ET1 ;禁止T1中断SETB TR1 ;T1启动MOV SCON,#40H ;置串行方式1,禁止接收MOV PCON,#00H ;置SMOD=0(SMOD不能位操作)CLR ES ;禁止串行中断MOV R0,#50H ;置接收数据区首地址MOV R2,#16 ;置接收数据长度SETB REN ;启动接收JNB RI,$ ;等待一帧数据接收完毕CLR RI ;清接收中断标志MOV A,SBUF ;读接收数据MOV R0,A ;存接收数据INC R0 ;指向下一数据

13、存储单元DJNZ R2,RDSB ;判16个数据接收完否?未完继续RET ;,乙机接收子程序:,RXDB:,RDSB:,2018/9/10,20,线选法扩展二片2K容量,6116,一片4K容量,27162716:0000H07FFH6116(1):0000H07FFH6116(2):0800H0FFFH,2018/9/10,21,MCS-51单片机与8155的接口 【例8-4】试设计一个8031单片机与并行接口芯片8155的接口电路,并对8155进行初始化编程:让8155的PA口、PB口工作在基本输入/输出方式,其中,A口为输出,B口为输入,对输入脉冲进行32分频,定时器作为脉冲发生器,输出连

14、续脉冲。 对8155I/O口地址分配如下:命令/状态寄存器的地址: 7F00HPA口的地址:7F01HPB口的地址:7F02HPC口的地址:7F03H定时器低8位的地址:7F04H定时器高8位的地址:7F05H。8031单片机与并行接口8155的接口电路如图所示。,2018/9/10,22,2018/9/10,23,8155初始化参考程序如下:MOV DPTR , #7F04H MOV A , #20H;对计数器的低8位赋初值MOVX DPTR , AINC DPTRMOV A , #C0H ;设定定时器为连续脉冲输出MOVX DPTR , A;装入定时器高8位MOV DPTR , #7F00H MOV A , #0C1H;设定命令控制字,并启动定时器MOVX DPTR , A,

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号