早教吧作业答案频道 -->其他-->
单片机中把两个16位无符号单字节数求和相加,设计程序?例1利用定时器输出周期为2ms的方波,设单片机晶振频率为6MHz.选用定时器/计数器T0作定时器,输出为P1.0引脚,2ms的方波可由间隔1
题目详情
单片机中把两个16位无符号单字节数求和相加,设计程序?
例 1 利用定时器输出周期为 2 ms的方波,设单片机晶振频率为 6 MHz.
选用定时器 /计数器T0 作定时器,输出为P1.0 引脚,2 ms 的方波可由间隔 1 ms的高低
平相间而成,因而只要每隔 1 ms对 P1.0 取反一次即可得到这个方波.
定时 1 ms的初值:
因为 机器周期=12÷6 MHz= 2 μs
所以 1 ms内T0 需要计数N次:
N= 1 ms÷2 μs = 500
由此可知:使用方式 0 的 13 位计数器即可,T0的初值X为
X=M-N=8 192-500=7 692=1E0CH
但是,因为 13 位计数器中,低8位TL0只使用了5 位,其余码均计入高8 位TH0的
初值,则T0的初值调整为
TH0=0F0H,TL0=0CH
TMOD初始化:TMOD=00000000B=00H
(GATE=0,C/T=0,M1=0,M0=0)
TCON初始化:启动TR0=1
IE初始化:开放中断EA=1,定时器T0 中断允许ET0=1
程序清单如下:
ORG 0000H
AJMP START; 复位入口
ORG 000BH
AJMP TOINT ; T0中断入口
ORG 0030H
START:MOV SP,#60H; 初始化程序
MOV TH0,#0F0H ; T0赋初值
MOV TL0,#0CH
MOV TMOD,#00H
SETB TR0 ; 启动T0
SETB ET0 ; 开T0中断
SETB EA ; 开总允许中断
MAIN:AJMP MAIN ; 主程序
TOINT:CPL P1.0
MOV TL0,#0CH
MOV TH0,#0F0H
RET
如果把6MHZ改成12MHZ程序应该怎么改?
两个无符号双字节数相加.
设被加数存放于内部RAM的40H(高位字节),41H(低位字节),加数存放于50H(高位字节),51H(低位字节),和数存入 40H和41H单元中.
START:CLR C ; 将Cy清零
MOV R0,#41H ; 将被加数地址送数据指针R0
MOV R1,#51H ; 将加数地址送数据指针R1
AD1:MOV A,@R0 ; 被加数低字节的内容送入A
ADD A,@R1 ; 两个低字节相加
MOV @R0,A ; 低字节的和存入被加数低字节中
DEC R0 ; 指向被加数高位字节
DEC R1 ; 指向加数高位字节
MOV A,@R0 ; 被加数高位字节送入A
ADDC A,@R1 ; 两个高位字节带Cy相加
MOV @R0,A ;高位字节的和送被加数高位字节
RET
如果把题目改成把两个16位无符号单字节数求和相加,程序怎么变化?
例 1 利用定时器输出周期为 2 ms的方波,设单片机晶振频率为 6 MHz.
选用定时器 /计数器T0 作定时器,输出为P1.0 引脚,2 ms 的方波可由间隔 1 ms的高低
平相间而成,因而只要每隔 1 ms对 P1.0 取反一次即可得到这个方波.
定时 1 ms的初值:
因为 机器周期=12÷6 MHz= 2 μs
所以 1 ms内T0 需要计数N次:
N= 1 ms÷2 μs = 500
由此可知:使用方式 0 的 13 位计数器即可,T0的初值X为
X=M-N=8 192-500=7 692=1E0CH
但是,因为 13 位计数器中,低8位TL0只使用了5 位,其余码均计入高8 位TH0的
初值,则T0的初值调整为
TH0=0F0H,TL0=0CH
TMOD初始化:TMOD=00000000B=00H
(GATE=0,C/T=0,M1=0,M0=0)
TCON初始化:启动TR0=1
IE初始化:开放中断EA=1,定时器T0 中断允许ET0=1
程序清单如下:
ORG 0000H
AJMP START; 复位入口
ORG 000BH
AJMP TOINT ; T0中断入口
ORG 0030H
START:MOV SP,#60H; 初始化程序
MOV TH0,#0F0H ; T0赋初值
MOV TL0,#0CH
MOV TMOD,#00H
SETB TR0 ; 启动T0
SETB ET0 ; 开T0中断
SETB EA ; 开总允许中断
MAIN:AJMP MAIN ; 主程序
TOINT:CPL P1.0
MOV TL0,#0CH
MOV TH0,#0F0H
RET
如果把6MHZ改成12MHZ程序应该怎么改?
两个无符号双字节数相加.
设被加数存放于内部RAM的40H(高位字节),41H(低位字节),加数存放于50H(高位字节),51H(低位字节),和数存入 40H和41H单元中.
START:CLR C ; 将Cy清零
MOV R0,#41H ; 将被加数地址送数据指针R0
MOV R1,#51H ; 将加数地址送数据指针R1
AD1:MOV A,@R0 ; 被加数低字节的内容送入A
ADD A,@R1 ; 两个低字节相加
MOV @R0,A ; 低字节的和存入被加数低字节中
DEC R0 ; 指向被加数高位字节
DEC R1 ; 指向加数高位字节
MOV A,@R0 ; 被加数高位字节送入A
ADDC A,@R1 ; 两个高位字节带Cy相加
MOV @R0,A ;高位字节的和送被加数高位字节
RET
如果把题目改成把两个16位无符号单字节数求和相加,程序怎么变化?
▼优质解答
答案和解析
如果把6MHZ改成12MHZ程序应该怎么改?
可以使用方式1.
X = M-N = 65 536 - 1 000 = 64 536 = FC 18H
需要修改的指令为如下三条.
MOV TH0,#0FCH ; T0赋初值
MOV TL0,#18H
MOV TMOD,#01H
如果把题目改成把两个16位无符号单字节数求和相加,程序怎么变化?
把:
ADDC A,@R1 ; 两个高位字节带Cy相加
改为:
ADD A,@R1 ; 两个高位字节带Cy相加
即可.
可以使用方式1.
X = M-N = 65 536 - 1 000 = 64 536 = FC 18H
需要修改的指令为如下三条.
MOV TH0,#0FCH ; T0赋初值
MOV TL0,#18H
MOV TMOD,#01H
如果把题目改成把两个16位无符号单字节数求和相加,程序怎么变化?
把:
ADDC A,@R1 ; 两个高位字节带Cy相加
改为:
ADD A,@R1 ; 两个高位字节带Cy相加
即可.
看了单片机中把两个16位无符号单字...的网友还看了以下:
正当美国宇航局为“勇气”号出现的问题一筹莫展时,“勇气”号的孪生兄弟“机遇”号火星车仍按照原计划于 2020-05-13 …
正当美国宇航局为“勇气”号出现的问题一筹莫展时,“勇气”号的孪生兄弟“机遇”号火星车仍按照原计划于 2020-05-13 …
英语翻译原来计划7/31号出货的,收到明天停电通知,以防万一准备改到8/2号出货.烦请您通知物流公 2020-05-24 …
小明和小伟利用暑假外出旅游,小明说,我出去玩了一周,这7天日期之和是84,猜猜我几号出门的?小伟说 2020-06-19 …
20.历史上每一次政治运动提出的口号,都反映出某个历史阶段的特点,带有深刻的时代烙印。在近代史上, 2020-06-29 …
小明和小伟利用暑假外出旅游小明说:我出去玩了一周这7天日期的总和为84猜猜我是几号出门的?小伟说: 2020-07-17 …
口号是“为达到一定目的、实现某项任务而提出的、供口头呼喊的有纲领性和鼓动作用的、简练明确”的语句,能 2020-11-04 …
语段阅读。神六“出阁”①本报东风航天城,“神舟六号”发射现场12日上午专电,这一天终于到了,2005 2020-11-07 …
神舟七号是几月几号发射的?几月几号出仓的? 2020-11-08 …
关于时间计算的地理题正当美国宇航局为“勇气”号出现的问题一筹莫展时,“勇气”号的孪生兄弟“机遇”号火 2020-11-22 …