首页 第6章作业及答案

第6章作业及答案

举报
开通vip

第6章作业及答案第6章作业1、说明定时器T0的四种工作方式。(P.145第6题)M1M0工作模式功能说明00013位的定时/计数模式,TL0的高3位没用。01116位的定时/计数模式1028位、初始值自动加载的定时/计数模式。113将T0分成两个相互独立的、8位的定时/计数模式。2、假设单片机晶振fosc=6MHz,若要求定时分别为0.1ms,1ms,10ms,定时器T0工作在方式0、方式1、方式2时,其初值应为多少?晶振fosc=6MHz,则机器周期为2us定时0.1ms时的初始值:50=110010B模式0:(213-50)=...

第6章作业及答案
第6章作业1、说明定时器T0的四种工作方式。(P.145第6题)M1M0工作模式功能说明00013位的定时/计数模式,TL0的高3位没用。01116位的定时/计数模式1028位、初始值自动加载的定时/计数模式。113将T0分成两个相互独立的、8位的定时/计数模式。2、假设单片机晶振fosc=6MHz,若要求定时分别为0.1ms,1ms,10ms,定时器T0工作在方式0、方式1、方式2时,其初值应为多少?晶振fosc=6MHz,则机器周期为2us定时0.1ms时的初始值:50=110010B模式0:(213-50)=(8192-50)=8142=1111111001110BTH0=#FEH0;TL0=#0EH模式1:(216-50)=(65536-50)=65486=1111111111001110BTH0=#0FFH;TL0=#0CEH模式2:(28-50)=(256-50)=206=11001110BTH0=#0CEH;TL0=#0CEH定时1ms时的初始值:500=111110100B模式0:(213-500)=(8192-500)=7692=1111000001100BTH0=#0F0H;TL0=#0CH模式1:(216-500)=(65536-500)=65036=1111111000001100BTH0=#0FEH;TL0=#0CH定时10ms时的初始值:5000=1001110001000B模式1:(216-5000)=(65536-5000)=60536=1110110001111000BTH0=#0ECH;TL0=#78H3、假设单片机晶振fosc=6MHz,请利用T0和P1.0输出矩形波,矩形波的高电平宽50us,低电平宽300us。(P.145第13)晶振fosc=6MHz→机器周期为2us定时器T0使之工作于模式3定时50us的初值为:256-25=231(E7H)定时300US的初值为:256-150=106(6AH) 方法 快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载 1:MOVTMOD,#00000011B;T0工作于模式3MOVTCON,#0;清TR0,TF0MOVTL0,#0E7H;高电平初值。256-25SETBP1.0;P1.0口输出高电平SETBTR0;启动定时器T0LOOP1:JNBTF0,LOOP1; 检测 工程第三方检测合同工程防雷检测合同植筋拉拔检测方案传感器技术课后答案检测机构通用要求培训 T0是否溢出CLRTF0;清除溢出标志CLRTR0;关闭定时器MOVTL0,#6AH;写低电平初值256-150SETBTR0;启动定时器T0CLRP1.0;使P1.0输出低电平LOOP2:JNBTF0,LOOP2;检测T0是否溢出CLRTF0;清除溢出标志CLRTR0;关闭定时器MOVTL0,#0E7H;写高电平初值256-25SETBTR0;启动定时器T0SETBP1.0;使P1.0输出高电平SJMPLOOP1;重复方法2:MOVTMOD,#03H;T0工作于模式3MOVTCON,#0;清TR0,TF0MOVTL0,#0E7H;高电平初值。256-25SETBP1.0;P1.0口输出高电平SETBTR0;启动定时器T0LOOP:JNBTF0,LOOP;检测T0是否溢出CLRTF0;清除溢出标志CLRTR0;关闭定时器JNBP1.0,NEXT;P1.0口为低电平转移,;高电平顺序执行MOVTL0,#6AH;定时器T0写入低电平的定时初值SETBTR0;启动定时器T0CLRP1.0;P1.0口输出低电平SJMPLOOP;返回重复NEXT:MOVTL0,#0E7H;定时器T0写入高电平的定时初值SETBTR0;启动定时器T0SETBP1.0;P1.0口输出高电平SJMPLOOP;返回重复4、假设单片机晶振fosc=12MHz,用T1定时,试编程由P1.0和P1.1引脚分别输出周期为2ms和500us的方波。(P.145第14题)晶振fosc=6MHz→机器周期为1us定时器T0使之工作于模式1定时250us的初值为:65536-250=65286=1111111100000110B=FF06H方法一:MOVTMOD,#10H;T1工作于模式1MOVTCON,#0;TR1、TF1清零MOVTH1,#0FFH;65536-250=(FF06H)MOVTL1,#05H;MOVR7,#4;2ms是500us的4倍SETBP1.0;P1.0置高电平SETBP1.1;P1.1置高电平SETBTR1;启动定时器T1LOOP:JNBTF1,LOOP;定时器是否溢出?CLRTF1;定时器溢出后,清除定时器溢出标志CPLP1.1;取反P1.1DJNZR7,NEXT;4倍关系是否满足?MOVR7,#4;重写4倍关系CPLP1.0;取反P1.0NEXT:CLRTR1;关闭定时器T1MOVTH1,#0FFH;重写定时器T1的初值MOVTL1,#06H;SETBTR1;启动定时器T1SJMPLOOP;返回重复方法二:MOVTMOD,#20H;T1工作于模式2MOVTCON,#0;TR1、TF1清零MOVTH1,#6;定时500us的初值(256-250)=6MOVTL1,#6;MOVR7,#4;500us与2ms是4倍的关系SETBP1.0;将P1.0置高电平SETBP1.1;将P1.1置高电平SETBTR1;启动定时器T1LOOP:JNBTF1,LOOP;定时器T1是否溢出CLRTF1;清溢出标志TF1CPLP1.1;取反P1.1口DJNZR7,LOOP;(R7)-1→(R7),(R7)是否为0CPLP1.0;取反P1.0口MOVR7,#4;重写R7SJMPLOOP;返回重复5、编写程序,其功能为:当P1.2引脚的电平上跳时,对P1.1输入的脉冲进行记数;当P1.2引脚的的电平下跳时,停止记数,并将结果存入R7R6中。(P.146第17题)MOVTMOD,#05H;定时器T0工作于方式1,计数方式MOVTCON,#0;清除TF0、TR0。MOVTH0,#0;定时器T0初始值清零MOVTL0,#0;LOOP1:JNBP1.2,LOOP1;P1.2的电平是否上跳SETBTR0;启动定时器T0开始计数LOOP2:JBP1.2,LOOP2;P1.2的电平是否下跳CLRTR0;停止计数MOVA,TL0;将计数结果写入R7、R6,MOVR6,A;R6写入低8位MOVA,TH0;MOVR7,A;R7写入高8位6、设fosc=12MHz,编写程序,其功能为:对T0进行初始化,使之工作于模式2,产生200us的定时,并用查询T0溢出标志TF0的方法,控制P1.0引脚输出周期为2ms的方波。(P.146第18题)MOVTMOD,#02H;T0工作于模式2,定时方式MOVTCON,#0;清除TF0、TR0。MOVTH0,#56;(256-200)=56MOVTL0,#56;MOVR7,#5;200us与1ms是5倍的关系SETBTR0;启动定时器T0SETBP1.0;将P1.0置高电平LOOP:JNBTF0,LOOP;检测T0的溢出标志CLRTF0;清除T0的溢出标志DJNZR7,LOOP;是否到5次MOVR7,#5;重新写入计数次数CPLP1.0;取反P1.0口SJMPLOOP;循环往复7、fosc=6MHz,用模式1编程实现:以定时器T1进行外部事件计数,每计数1000个脉冲后,定时器T1转为定时工作方式,定时10ms后又转为计数方式,如此循环不止。(P.145第8题)MOVTCON,#0;清TF1、TR1START:MOVTMOD,#50H;T1工作于模式1,计数方式MOVTH1,#0FCH;(65536-1000)=FC18HMOVTL1,#18H;SETBTR1;启动T1,计数开始LOOP1:JNBTF1,LOOP1;检测T1溢出标志CLRTF1;清除T1溢出标志MOVTMOD,#10H;T1工作于模式1,定时方式CLRTR1;关闭T1MOVTH1,#0ECH;(65536-5000)=EC6EHMOVTL1,#6EH;SETBTR1;启动定时器T1LOOP2:JNBTF1,LOOP2;检测T1溢出标志CLRTF1;清除T1溢出标志CLRTR1;关闭T1SJMPSTART;循环不止第5章参考作业及答案8、89C51单片机的P3.3口有1Hz的方波输入,P3.5口有频率介于1KHz—5KHz的周期信号输入,试利用定时器T1的相关功能,编程计算该周期信号的频率,并将其存于片外RAM2100H单元中。MOVTMOD,#D0H;T1:方式1、计数、开关由TR1和P3.3联合控制CLRTF1;清除溢出标志CLRTR1;关闭定时器MOVTH1,#0;写入计数初值MOVTl1,#0;LOOP1:JNBP3.3,LOOP1;等待P3.3为高电平SETBTR1;启动定时器T1LOOP2:JBP3.3,LOOP2;等待计数结束CLRTR1;关闭定时器T1CLRC;清除进位标志MOVA,TL1;读取计数脉冲数的低8位RLCA;低8位×2MOVDPTR,#2100H;片外目的数据存储器地址指针MOVX@DPTR,A;低8位存入要求的目标地址INCDPTR;目标地址+1MOVA,TH1;读取计数脉冲数的高8位RLCA;低8位×2MOVX@DPTR,A;低8位存入要求的目标地址方法二:利用中断方式思路:P3.3引脚上输入1Hz的方波,即每隔1秒钟中断一次,利用中断间隔测P3.5引脚的脉冲数。ORG0000HSJMPMain  ;转移到主程序ORG001BHAJMPT1  ;转移到真正的中断服务程序ORG0030HMain:MOVTMOD,#50H ;定时器T1:方式1、计数、开关由软件控制CLRTF1  ;清除定时器溢出标志CLRTR1  ;关闭定时器T1MOVIE,#08H ;允许定时器T1中断MOVIP,#0  ;未设置中断优先级别MOVTH1,#0  ;计数初值MOVTL1,#0  ;CLRF0  ;清除开始计数标志SETBEA;开中断SJMP$  ;等待中断T1:JBF0,NEXT;判断是否开始计数SETBTR1  ;启动计数器SETBF0  ;计数标志置1SJMPNEXT1  ;转移NEXT:CLRTR1  ;关闭计数器CLRF0  ;计数标志清0MOVDPTR,#2100H ;地址指针指向目标地址MOVA,TL1;读计数器的低8位MOVX@DPTR,A  ;存计数器的低8位MOVA,TH1  ;读计数器的高8位INCDPTR ;地址指针加1MOVX@DPTR,A;存计数器的高8位NEXT1:JNBP3.3,NEXT1 ;等待P3.3引脚上出现高电平RETI  ;中断返回9、当系统选用6MHz晶体振荡器时,由T0工作在方式为2,利用中断响应,产生周期为2ms(脉冲宽度为1ms)的方波序列,并由P1.0输出。(1)写出T0定时器的方式控制字,T0定时器初值计算。(2)试编写程序完成此功能。思路:方波的周期为2ms,每隔1ms对P1.0取反,可完成题目要求。系统晶体振荡器的频率为6MHz,机器周期为2us,定时器T0在方式2时,最大定时256us×2=512us,达不到1ms的要求,故将定时器T0的初始值选为:256-250=6(定时0.5ms),两次后取反P1.0口。(1)T0的初始值为:X=256-250=6T0的控制字为:MOVTMOD,#20HMOVTCON,#0(2)参考程序如下:ORG0000HSJMPMainORG000BHAJMPT0ORG0030HMain:MOVTMOD,#20H;定时器T1工作于方式2CLRTR0;关闭定时器T1CLRTF0;清除定时器T1溢出标志MOVIE,#02H;允许定时器T1中断MOVIP,#0;不设置悠闲级别MOVTH0,#6;定时器T1初值MOVTL0,#6;(256-250=6)MOVR7,#2;定时0.5ms与1ms的2倍的关系SETBTR0;启动定时器T1SETBEA;开中断SJMP$T0:DJNZR7,NEXT;两次是否到?未到则中断返回,到则继续CPLP1.0;取反P1.0口MOVR7,#2;重置2倍的关系NEXT:RETI;中断返回10、有一个频率为10MHz的方波信号,要求用定时器对该方波信号计数,每计满100个脉冲,将P1.1脚上的电平取反。思路:利用定时器T0方式2对P3.2引脚上输入的脉冲进行计数,每计数100,取反P1.0口。定时器T0在方式2时的初始值为:X=256-100=156(9CH)采用对定时器T0的溢出标志TF0扫描的方式编程。参考程序如下:MOVTMOD,#06H;定时器T0工作于方式2CLRTR0;关闭定时器T0CLRTF0;清除定时器T0的溢出标志MOVTH0,#156;计数100的初值MOVTL0,#156;256-100=156SETBTR0;启动定时器T0LOOP:JNBTF0,LOOP;等待溢出CLRTF0;清除定时器T0的溢出标志CPLP1.0;取反P1.0口SJMPLOOP;重复循环11、(同第7题)按以下要求编写8051单片机定时器的初始化程序:(1)T0作为定时,定时时间为10ms.(2)T1作为计数,记满1000溢出。(1)设晶振fosc=12MHz,则T0在方式1时的初始值为X=65536-10000=5553610000=8192+1024+512+256+16=10011100010000X=1101100011110000B=#D8F0H定时器T1在方式1时的初始值为:Y=65536-10001000=512+256+128+64+32+8=111111000Y=1111111000001000B=FE08H(2)初始化参考程序MOVTMOD,#01010001B;T0方式1(定时),T1方式1(计数)MOVTCON,#0;清TR0、TF0、TR1、TF1MOVIE,#0AH;允许T0、T1中断MOVIP,#0;不设置优先级MOVTH0,#D8H;T0的初始值MOVTL0,#0F0H;65536-10000=D8F0HMOVTH1,#0FEH;T1的初始值MOVTL1,#08H;65536-1000=FE08HSETBTR0;启动定时器T0SETBTR1;启动定时器T1SETBEA;开中断12、要求从P1.1引脚输出1000Hz方波,晶振频率为12MHz。试设计程序。思路:(1)只要使P1.1每隔500µs取反一次即可得到1ms方波;。(2)将T1设为定时方式0:GATE=0,C/T(—)=0,M1M0=00;T0不用可为任意,只要不使其进入方式3,一般取0即可。故TMOD=00H。下面计算500µs定时T1的初值:机器周期:T=1µs,设初值为X则:X=8192-500=7692=1111000001100B=1111000000110B=F00CH因为在作13位计数器用时,TL1高3位未用,应写0,X的低5位装入TL1的低5位,所以TL1=#0CH;X的高8位应装入TH1,所以TH1=#F0H。参考源程序如下:MOVTCON,#0;清TF1、TR1MOVTMOD,#0;定时器T1工作于方式0MOVTH1,#0F0H;定时500us的初值MOVTL1,#0CH;8192-500=7692=F00CHSETBTR1;启动定时器T1LOOP:JNBTF1,LOOP;等待定时500us的溢出CLRTF1;清除溢出标志CPLP1.1;取反P1.1口CLRTR1;关闭定时器T1MOVTH1,#0F0H;重写定时500us的初值MOVTL1,#0CH;重写定时500us的初值SETBTR1;启动定时器T1SJMPLOOP13、试用定时/计数器T1对外部事件计数。要求每计数100,就将T1改成定时方式,控制P1.7输出一个脉宽为10ms的正脉冲,然后又转为计数方式,如此反复循环。设晶振频率为12MHz。定时器T1确定工作于方式1计数100的初始值为:65536-100100=64+32+4=01100100B65536-100=1111111110011100B=FF9CH定时10ms的初始值为:65536-100005000=4096+512+256+128+8=100111000100065536-5000=60536=1110110001111000B=EC78H参考程序如下:LOOP3:CLRTR1;关闭定时器T1CLRTF1;清除定时器T1的溢出标志MOVTMOD50H;定时器T1工作于方式1,计数MOVTH1,#0FFH;计数100的初值MOVTL1,#9CH;65536-100=FF9CHSETBTR1;启动定时器T1LOOP1:JNBTF1,LOOP1;等待计数100溢出MOVTMOD,#10H;定时器T1工作于方式1,定时CLRTF1;清除定时器溢出标志CLRTR1;关闭定时器T1MOVTH1,#0ECH;定时10ms的初值MOVTL1,#78H;65536-5000=EC78HSETBTR1;启动定时器T1LOOP2:JNBTF1,LOOP2;等待定时10ms溢出CPLP1.7;取反P1.7口SJMPLOOP3;返回循环14、若单片机晶振为12MHz,利用定时器1方式1,产生1ms的定时,在P1.0脚产生周期为2ms方波,用查询方式工作,查询标志为TF1。已知fosc=12MHz→1个机器周期为1us1ms=1000us初值=65536-1000=5453664536转换为二进制:1111110000011000T0的低8位:00011000(18H)T0的高8位:11110000(FCH)则有:(TL0)←#18H;(TH0)←#0FCH参考源程序如下:MOVTCON,#10H;定时器T1工作于方式1MOVTMOD,#0;清除TR1、TF1MOVTH1,#0FCH;定时1ms的初值MOVTL1,#18H;65536-1000=FC18HSETBTR1;启动定时器T1LOOP:JNBTF1,LOOP;等待定时1ms的溢出CLRTF1;清除溢出标志CPLP1.0;取反P1.0口CLRTR1;关闭定时器T1MOVTH1,#0FCH;重写定时1ms的处值MOVTL1,#18H;重写定时1ms的处值SETBTR1;启动定时器T1SJMPLOOP;返回循环15、系统时钟频率为6MHz,试用定时器T0作外部计数器,编程实现每计到1000个脉冲,使T1开始2ms定时,定时时间到后,T0又开始计数,这样反复循环不止。(1)定时器T0工作于方式1,计数1000的初值为:65536-10001000=512+256+128+64+32+8=0000000111111000B65536-1000=1111110000011000B=FC18H(2)晶振fosc=6MHz,机器周期为2us,定时器T0工作于方式1,定时1ms的初值为:65536-500500=256+128+64+32+16+4=0000000111110100B(取反+1可得到结果)(65536-500)=65036=1111111000001100BTH0=#0FEH;TL0=#0CH(3)参考程序如下:LOOP3:MOVTMOD,#00000101BCLRTF0CLRTR0MOVTH0,#0FCHMOVTL0,#18HSETBTR0LOOP1:JNBTF0,LOOP1CLRTF0CLRTR0MOVTMOD,#01HMOVTH0,#0FEHMOVTL0,#0CHSETBTR0LOOP2:JNBTF0,LOOP2SJMPLOOP3
本文档为【第6章作业及答案】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
旋律
几年的财务工作经验,现认财务主管一职!精通各种财务管理软件
格式:doc
大小:168KB
软件:Word
页数:0
分类:
上传时间:2018-06-20
浏览量:5