欢迎来到天天文库
浏览记录
ID:59412868
大小:302.00 KB
页数:45页
时间:2020-09-19
《[计算机软件及应用]例子讲解ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、例子讲解如右图所示,将P1口的P1.4~P1.7作为输入位,P1.0~P1.3作为输出位。要求利用8031将开关所设的数据读入单片机,并依次通过P1.0~P1.3输出,驱动发光二极管,以检查P1.4~P1.7输入的电平情况(高电平LED亮)。现要求采用中断触发方式,每中断一次完成一次操作。程序如下:ORG0000HAJMPMAINORG0003HAJMPINTERORG0030HMAIN:SETBEX0SETBIT0SETBEAHERE:SJMPHERE中断服务子程序:(输入、显示)ORG0200H
2、INTER:MOVP1,#0F0HMOVA,P1SWAPAMOVP1,ARETIEND如右图所示的中断电路可实现系统的故障显示。当系统的各部分正常工作时,4个故障源的输入均为低电平,显示灯全不亮。当有某个部分出现故障时,则相应的输入线由低电平变为高电平,相应的发光二极管点亮。程序如下:ORG0000HAJMPMAINORG0003HAJMPINTERORG0030HMAIN:SETBEX0SETBIT0SETBEAHERE:SJMPHERE中断服务子程序:ORG0100HINTER:JNBP1.0,
3、L1SETBP1.1L1:JNBP1.2,L2SETBP1.3L2:JNBP1.4,L3SETBP1.5L3:JNBP1.6,L4SETBP1.7L4:RETIEND某工业监控系统具有温度、压力、pH值等多路监控功能。在pH值<7时将向CPU申请中断,CPU响应后令P3.0引脚输出高电平,经驱动使加碱管道电磁阀接通1秒,以调整pH值。一、电路及分析:中断请求输入相当于“四输入的与或门”,外电路上升沿有效。P1.0~P1.3用于查询中断源。P1.4~P1.7用于清除中断请求。主程序及中断程序入口部分:
4、ORG0000HLJMPMAINLJMPINTX0ORG0030HMAIN:MOVSP,#5FHSETBEX0SETBIT0;下降沿触发SETBEASJMP$查询部分:INTX0:CLREAPUSHPSWPUSHASETBEAJBP1.0,DV1JBP1.1,DV2JBP1.2,DV3JBP1.3,DV4EXIT:CLREAPOPAPOPPSWSETBEARETI各装置的中断服务程序部分:DV1:……(装置1的中断服务程序):LJMPEXITDV2:……(装置2的中断服务程序):LJMPEXITDV
5、4:……(装置4的中断服务程序):LJMPEXIT装置3的中断服务程序:DV3:SETBP3.0LCALLDELAYCLRP3.0CLRP1.6SETBP1.6LJMPEXIT延时时间计算:8+(2+(2+4*249+2)*100+2)*10+8=1000056μS≈1S延时1秒的子程序:(设晶振为12MHz)DELAY:PUSH30HPUSH31HPUSH32HMOV32H,#10DY1:MOV31H,#100DY2:MOV30H,#249LY3:NOPNOPDJNZ30H,DY3DJNZ31H,
6、LY2DJNZ32H,LY1POP32HPOP31HPOP30HRET应用举例设定时器T0选择工作模式0,定时时间为1ms,ƒosc=6MHz。试确定T0初值,计算最大定时时间T。解:(1)求T0的初值X由公式:t=(213-T0初值)*机器周期Tcyt=1ms=1000μs机器周期Tcy=12/ƒosc=12/6000000s=2μs得1000=(213-X)*2所以初值X=8192-500=7692=1111000001100BT0的低5位:01100B=0CHT0的高8位:11110000B=
7、F0H(2)最大定时时间T当T0的初值=0时为最大定时时间T=(213-0)*2=8192*2μs=16384μs=16.384ms7692÷32商为高8位,余数为低5设T1以模式0定时,定时时间为1ms,ƒosc=6MHz,编程实现其定时功能。解:(1)计算初值(同上,略)F0HTH0,0CHTL0(2)程序清单ORG0000HRESET:AJMPMAINORG000BHAJMPIT0P;主程序ORG0100HMAIN:MOVSP,#5FHMOVTL0,#0CHMOVTH0,#0F0HSETB
8、TR0SETBET0SETBEASJMP$;中断服务程序ORG0120HIT0P:MOVTL0,#0CHMOVTH0,#0F0HCPLP1.0RETI利用T0的工作模式0产生1ms的定时,编程实现在P1.0引脚上输出周期为2ms的方波。设单片机的晶振频率ƒosc=12MHz。解:方法:定时1ms,对P1.0取反,然后继续定时(1)设置模式字TMOD=****0000B=00000000B=00H(2)计算初值由公式:t=(213-T0初值)*机器周期t=1ms=100
此文档下载收益归作者所有