发布网友 发布时间:2024-10-23 22:03
共2个回答
热心网友 时间:4小时前
1.利用定时器输出周期为2ms的方波,晶振频率为 6 MHz
解:选用定时计数器T0工作与定时方式1,机器周期为
定时器初值TC= 65036D=FE0CH
所以:TH0=0FEH,TL0=0CH
方波由P1.0引脚输出,具体主程序及中断服务程序如下:
ORG 00H
LJMP START
ORG 0BH
LJMP INT_T0
ORG 0100H
START: MOV TMOD,#01H
MOV TH0,#0FEH
MOV TL0,#0CH
SETB ET0
SETB EA
SETB TR0
SJMP $
INT_T0: MOV TH0,#0FEH
MOV TL0,#0CH
CPL P1.0
RETI
如晶振频率为12MHz,需重新计算机器周期及定时器初值。
2.两个无符号双字节数相加。
解:假定无符号双字节数在内部RAM中地址分别为:数据A高字节地址30H,低字节地址31H, 数据B高字节地址40H,低字节地址41H, 考虑结果可能为17位,保存50H51H52H(高字节在前),在则程序如下:
MOV A,31H
ADD A,41H
MOV 52H,A
MOV A,30H
ADDC A,40H
MOV 51H,A
CLR A
ADDC A,#0
MOV 50H,A
最后的题目不对!!!既然是16位无符号数,一定是双字节的!如果是这样,程序同上!!
热心网友 时间:4小时前
两个题目?
都是修改...,那么你应该把原程序公布出来。
---------
如果把6MHZ改成12MHZ程序应该怎么改?
可以使用方式1。
X = M-N = 65 536 - 1 000 = 536 = FC 18H
需要修改的指令为如下三条。
MOV TH0, #0FCH ; T0赋初值
MOV TL0, #18H
MOV TMOD, #01H
========================
如果把题目改成把两个16位无符号单字节数求和相加,程序怎么变化?
把:
ADDC A, @R1 ; 两个高位字节带Cy相加
改为:
ADD A, @R1 ; 两个高位字节带Cy相加
即可。