![[计算机软件及应用]例--子--讲--解PPT课件_第1页](http://file1.renrendoc.com/fileroot_temp2/2020-5/14/4d0d1b0b-2048-46be-b6f3-cd040905cab6/4d0d1b0b-2048-46be-b6f3-cd040905cab61.gif)
![[计算机软件及应用]例--子--讲--解PPT课件_第2页](http://file1.renrendoc.com/fileroot_temp2/2020-5/14/4d0d1b0b-2048-46be-b6f3-cd040905cab6/4d0d1b0b-2048-46be-b6f3-cd040905cab62.gif)
![[计算机软件及应用]例--子--讲--解PPT课件_第3页](http://file1.renrendoc.com/fileroot_temp2/2020-5/14/4d0d1b0b-2048-46be-b6f3-cd040905cab6/4d0d1b0b-2048-46be-b6f3-cd040905cab63.gif)
![[计算机软件及应用]例--子--讲--解PPT课件_第4页](http://file1.renrendoc.com/fileroot_temp2/2020-5/14/4d0d1b0b-2048-46be-b6f3-cd040905cab6/4d0d1b0b-2048-46be-b6f3-cd040905cab64.gif)
![[计算机软件及应用]例--子--讲--解PPT课件_第5页](http://file1.renrendoc.com/fileroot_temp2/2020-5/14/4d0d1b0b-2048-46be-b6f3-cd040905cab6/4d0d1b0b-2048-46be-b6f3-cd040905cab65.gif)
已阅读5页,还剩40页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
-,1,例子讲解,-,2,如右图所示,将P1口的P1.4P1.7作为输入位,P1.0P1.3作为输出位。要求利用8031将开关所设的数据读入单片机,并依次通过P1.0P1.3输出,驱动发光二极管,以检查P1.4P1.7输入的电平情况(高电平LED亮)。现要求采用中断触发方式,每中断一次完成一次操作。,-,3,程序如下:ORG0000HAJMPMAINORG0003HAJMPINTERORG0030HMAIN:SETBEX0SETBIT0SETBEAHERE:SJMPHERE,中断服务子程序:(输入、显示)ORG0200HINTER:MOVP1,#0F0HMOVA,P1SWAPAMOVP1,ARETIEND,-,4,如右图所示的中断电路可实现系统的故障显示。当系统的各部分正常工作时,4个故障源的输入均为低电平,显示灯全不亮。当有某个部分出现故障时,则相应的输入线由低电平变为高电平,相应的发光二极管点亮。,-,5,程序如下:ORG0000HAJMPMAINORG0003HAJMPINTERORG0030HMAIN:SETBEX0SETBIT0SETBEAHERE:SJMPHERE,中断服务子程序:ORG0100HINTER:JNBP1.0,L1SETBP1.1L1:JNBP1.2,L2SETBP1.3L2:JNBP1.4,L3SETBP1.5L3:JNBP1.6,L4SETBP1.7L4:RETIEND,-,6,某工业监控系统具有温度、压力、pH值等多路监控功能。在pH值7时将向CPU申请中断,CPU响应后令P3.0引脚输出高电平,经驱动使加碱管道电磁阀接通1秒,以调整pH值。一、电路及分析:中断请求输入相当于“四输入的与或门”,外电路上升沿有效。P1.0P1.3用于查询中断源。P1.4P1.7用于清除中断请求。,-,7,主程序及中断程序入口部分:ORG0000HLJMPMAINLJMPINTX0ORG0030HMAIN:MOVSP,#5FHSETBEX0SETBIT0;下降沿触发SETBEASJMP$,查询部分:INTX0:CLREAPUSHPSWPUSHASETBEAJBP1.0,DV1JBP1.1,DV2JBP1.2,DV3JBP1.3,DV4EXIT:CLREAPOPAPOPPSWSETBEARETI,-,8,各装置的中断服务程序部分:DV1:(装置1的中断服务程序):LJMPEXITDV2:(装置2的中断服务程序):LJMPEXITDV4:(装置4的中断服务程序):LJMPEXIT,-,9,装置3的中断服务程序:DV3:SETBP3.0LCALLDELAYCLRP3.0CLRP1.6SETBP1.6LJMPEXIT延时时间计算:8+(2+(2+4*249+2)*100+2)*10+8=1000056S1S,延时1秒的子程序:(设晶振为12MHz)DELAY:PUSH30HPUSH31HPUSH32HMOV32H,#10DY1:MOV31H,#100DY2:MOV30H,#249LY3:NOPNOPDJNZ30H,DY3DJNZ31H,LY2DJNZ32H,LY1POP32HPOP31HPOP30HRET,-,10,应用举例设定时器T0选择工作模式0,定时时间为1ms,osc=6MHz。试确定T0初值,计算最大定时时间T。解:(1)求T0的初值X由公式:t=(213-T0初值)*机器周期Tcyt=1ms=1000s机器周期Tcy=12/osc=12/6000000s=2s得1000=(213-X)*2所以初值X=8192-500=7692=1111000001100BT0的低5位:01100B=0CHT0的高8位:11110000B=F0H(2)最大定时时间T当T0的初值=0时为最大定时时间T=(213-0)*2=8192*2s=16384s=16.384ms,769232商为高8位,余数为低5,-,11,设T1以模式0定时,定时时间为1ms,osc=6MHz,编程实现其定时功能。解:(1)计算初值(同上,略)F0HTH0,0CHTL0(2)程序清单ORG0000HRESET:AJMPMAINORG000BHAJMPIT0P;主程序ORG0100HMAIN:MOVSP,#5FH,MOVTL0,#0CHMOVTH0,#0F0HSETBTR0SETBET0SETBEASJMP$,-,12,;中断服务程序ORG0120HIT0P:MOVTL0,#0CHMOVTH0,#0F0HCPLP1.0RETI,-,13,利用T0的工作模式0产生1ms的定时,编程实现在P1.0引脚上输出周期为2ms的方波。设单片机的晶振频率osc=12MHz。解:方法:定时1ms,对P1.0取反,然后继续定时(1)设置模式字TMOD=*0000B=00000000B=00H(2)计算初值由公式:t=(213-T0初值)*机器周期t=1ms=1000s,机器周期Tcy=12/osc=12/12000000s=1s得1000=(213-X)*1=(8192-X)*1所以初值X=7192=1110000011000BT0的低5位:11000B=18HT0的高8位:11100000B=E0H,719232商为高8位,余数为低5位,-,14,(3)程序清单方法一:中断方式ORG0000HRESET:LJMPMAINORG000BHLJMPCTC0;主程序ORG0030HMAIN:MOVSP,#5FHMOVTMOD,#0MOVTL0,#18HMOVTH0,#0E0HSETBEASETBET0SETBTR0SJMP$,;中断服务程序ORG0100HCTC0:MOVTL0,#18HMOVTH0,#0E0HCPLP1.0RETI,-,15,方法二:查询方式ORG0000HSTART:MOVSP,#5FHMOVTMOD,#0MOVTL0,#18HMOVTH0,#0E0HSETBTR0LOOP:JBCTF0,NEXTSJMPLOOPNEXT:MOVTL0,#18HMOVTH0,#0E0HCPLP1.0SJMPLOOP,可替换为:LOOP:JNBTF0,$CLRTF0MOVTL0,#18H:,-,16,用定时器T1产生一个50Hz的方波,由P1.1输出。使用程序查询方式,设osc=12MHz。解:(1)计算初值方波周期T为:T=1/50s=0.02s=20ms定时时间为:t=T/2=10ms=10000s由公式:t=(216-X)*机器周期Tcy因Tcy=1s,得10000=(216-X)*1,10000=65536-XX=55536=D8F0H,55536256商为高8位,余数为低8位,-,17,(2)模式字TMODTMOD=0001*B=10H(3)源程序ORG0000HMOVTMOD,#10HSETBTR1LP:MOVTH1,#0D8HMOVTL1,#0F0HJNBTF1,$CLRTF1CPLP1.1SJMPLP,-,18,当P3.4引脚上输入的电平发生负跳变时,从P1.0输出一个500s的同步脉冲,请编程实现该功能。设osc=6MHz。解题思路:先令T0以模式2计数,其初值设为FFH,当P3.4引脚上输入的电平发生负跳变时,计数器加1使溢出标志置1;然后令T0以模式2定时,使P1.0输出一个500s的同步负脉冲。,-,19,解:1、T0以模式2计数(1)计数初值X=0FFH(2)模式字TMOD=*0110B=06H2、T0以模式2定时(1)定时初值X计算t=500s,Tcy=2s由公式:t=(28-X)*机器周期Tcy得500=(256-X)*2X=6(2)模式字TMOD=*0010B=02H,-,20,3、程序清单:ORG0000HSTART:MOVTMOD,#6;T0以模式2计数MOVTH0,#0FFHMOVTL0,#0FFHSETBTR0JNBTF0,$CLRTF0CLRTR0MOVTMOD,#2;T0以模式2定时,MOVTH0,#06MOVTL0,#06CLRP1.0SETBTR0JNBTF0,$SETBP1.0CLRTF0CLRTR0SJMPSTART,-,21,利用定时器T1的模式2对外部信号计数,要求每计满100次对P1.0端取反。解:(1)计算计数初值X100=28-XX=256-100=156=9CH(2)模式字TMOD=0110*B=60H(3)程序清单;用中断方式ORG0000HMAIN:MOVTMOD,#60HMOVTL1,#156MOVTH1,#156MOVIE,#88HSETBTR1SJMP$,;中断服务程序ORG001BHCPLP1.0RETI,-,22,设某单片机系统中已经使用了两个外部中断源,并置定时器T1为模式2,作串行口波特率发生器用。现要求再增加一个外部中断源,并由P1.0引脚输出一个5kHz的方波。osc=12MHz。解:1、确定定时器的工作方式将T0设置为模式3计数,T0的引脚接外部中断源,TL0的计数初值设为FFH,下降沿产生中断;T0的TH0为8位定时器,可产生方波,用中断方式;T1设为模式2定时,作串行口的波特率发生器。2、计算各个初值(1)TL0的初值为0FFH(2)TH0的初值产生5kHz的方波的周期为:T=1/5000s=0.2ms=200s,-,23,因此TH0的定时时间为:t=T/2=100s,Tcy=1s得100=(256-X)*TcyX=256-100=156TH1=TL1,由波特率值确定3、TMOD值:00100111B=27HTCON值:01010101B=55H4、程序清单:(1)中断入口部分:ORG0000HSTART:LJMPMAINLJMPE0INTORG000BHLJMPTL0INT,ORG0013HLJMPE1INTORG001BHLJMPTH0INT,-,24,(2)主程序部分:MAIN:MOVSP,#5FHMOVTMOD,#27HMOVTL0,#0FFHMOVTH0,#156MOVTH1,#dataMOVTL1,#dataMOVIE,#9FH;开中断:,-,25,(3)中断处理程序部分:TL0溢出中断服务程序:TL0INT:MOVTL0,#0FFH(外部中断处理)RETITH0溢出中断服务程序:TH0INT:MOVTH0,#156CPLP1.0ERTI(其它外部中断服务程序略),-,26,设某单片机系统的晶振频率为6MHz,试编写利用T0产生1s定时的程序。解:1、确定定时器T0的工作模式Tcy=2s模式0最长可定时:2s*8192=16.384ms模式1最长可定时:2s*65536=131.072ms模式2最长可定时:2s*256=512s选模式1,每隔100ms中断一次,中断10次为1s。2、计算初值X100000s=(65536-X)*2sX=65536-50000=15536=3CB0H3、实现的方法:(1)计数器法;(2)中断循环程序法,15536256商为高8位,余数为低8位,-,27,4、程序清单:(1)中断入口和主程序部分:ORG0000HSTART:LJMPMAINORH000BHLJMPSERVEORG0030HMAIN:MOVSP,#5FHMOVB,#10MOVTMOD,#01HMOVTL0,#0B0HMOVTH0,#3CHSETBTR0;开运行SETBET0;开中断SETBEASJMP$,(2)中断服务程序部分:SERVE:MOVTL0,#0B0HMOVTH0,#3CHDJNZB,LOOPCLRTR0LOOP:RETIEND,-,28,8031与8155的连接方法,-,29,-,30,设置8155,使用I/O口和定时器:使A口为基本输入方式,B口为基本输出方式;定时器作方波发生器,对输入的脉冲进行24分频。试编程实现之。思路:先对定时器赋初值和设定输出波形,向定时器/计数器寄存器中写;再设定A、B口的工作方式和传输方向,并启动定时器工作,向命令寄存器中写。程序段如下:,-,31,(1)对定时器赋初值和设定输出波形:定时器/计数器寄存器地址:7F04H、7F05HMOVDPTR,#7F04HMOVA,#24MOVXDPTR,AINCDPTRMOVA,#01000000BMOVXDPTR,A(2)设定A、B口的工作方式并启动定时器工作:命令寄存器地址:7F00HMOVDPTR,#7F00HMOVA,#11000010BMOVXDPTR,A,-,32,8051单片机的时钟振荡频率为11.0592MHz,选用定时器T1工作于模式2作为波特率发生器,波特率为2400b/s。求T1的初值X,并编写初始化程序段。解:设波特率加倍位SMOD=0X=256-11.0592106(0+1)/(3842400)=244=F4H,初始化程序段:MOVTMOD,#20HMOVTH1,#0F4HMOVTL1,#0F4HSETBTR1:,-,33,用8051串行口外接CD4049或74LS164串入-并出移位寄存器,扩展8位并行口。8位并行口的每位都接一个发光二极管,要求发光二极管从左到右他延迟的轮流显示,并且不断循环。设发光二极管为共阴极接法,如下图所示。STB为高电平时允许并行输出,-,34,解:采用中断方式发送;逐位输出高电平使二极管轮流发光;显示延时通过调用延时子程序实现。程序如下:,-,35,用8051的串行口以方式1发送ASCII数据块,要求波特率为1200b/s,进行校验。试编写采用查询方式发送的程序。设数据在片内RAM的20H3FH单元,osc=11.0592MHz。解:(1)最高位作校验位,采用奇校验,P最高位(2)用定时器/计数器1以模式2定时,作为波特率发生器;计算初值,由初值X=2N-osc(SMOD+1)/(384波特率值)这里N=8,osc=11.0592MHz波特率为1200b/s,取SMOD=0PCON=00H得初值X=232D=0E8H。(3)TMOD=00100000B=20H(4)SCON=01000000B=40H,-,36,(5)程序清单:主程序,-,37,用8051的串行口以方式1接收带奇偶校验位的数据块(与上题配合)。试编写采用查询方式的程序,接收的数据放在片内RAM的20H3FH单元。osc=11.0592MHz。解:(1)最高位为校验位(采用奇校验),应去掉(2)用定时器/计数器1以模式2定时,作为波特率发生器;计算初值,由初值X=2N-osc(SMOD+1)/(384波特率值)这里N=8,osc=11.0592MHz波特率为1200b/s,取SMOD=0PCON=00H得初值X=232D=0E8H。(3)TMOD=00100000B=20H(4)SCON=01010000B=50H,-,38,(5)程序清单:主程序,-,39,8031串行口按双工方式收发ASCII字符,最高位用来作奇偶校验位,采用奇校验,要求传送的波特率为1200b/s,用中断方式收发,试编写程序。设发送的数据的首地址为20H
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年科技电子产品贴牌加工及售后维护合同
- 2025房地产抵押贷款合同模板:绿色建筑版
- 2025年高科技企业实习生高新技术企业认定劳动合同
- 2025版砂石料行业知识产权保护合作合同范本
- 2025拆旧房屋产权置换服务合同范本
- 2025版高品质住宅社区联合开发合作协议书
- 2025年度水电工程安全生产教育与培训合同
- 2025保密协议:能源项目信息保密合同范本
- 2025年度返聘高级管理人才与跨国企业合作协议范本
- 2025年度套装门市场拓展与代理销售合同
- 病理科实验室生物安全评估表
- 2024年高考作文备考之议论文写作素材:人物篇(墨子)
- 成人学习者数字素养的培养
- 管理会计模拟实训实验报告
- (正式版)JBT 11270-2024 立体仓库组合式钢结构货架技术规范
- 新闻采访课件
- 上市公司合规培训
- SPACEMAN(斯贝思曼)冰淇淋机 安装调试培训
- 利润分成合同
- 眼镜店市场可行性分析方案
- 5G通信网络中的负载均衡技术
评论
0/150
提交评论