当前位置:文档之家› 单片机课后作业答案.

单片机课后作业答案.


(2)XCH A,30H
;A=( A5H )
(3)XCH A,@R0
;A=( A5H )
(4)XCHD A,@R0 ;A=( 75H )
(5)SWAP A
;A=( A7H )
(6)ADD A,R0 ;A=( AAH ),CY=( 0 )
(7)ADD A,30H
;A=( 1FH ),CY=( 1 )
(8)ADD A,#30H ; A=( AAH ),CY=( 0 ) (9)ADDC A,30H ; A=( 20H ),CY=( 1 ) (10)SUBB A,30H ; A=( D4H ),CY=( 1 ) (11)SUBB A,#30H ; A=( 49 ),CY=( 0 )
MOV SP, #6FH MOV PSW,#50H MOV A,#77H PUSH A PUSH PSW MOV PSW,#35H MOV A,#0BFH POP A
4. 注释下列程序各语句,并说明该程序功能。
MOV R0, #36H ; 立即数#36H送R0
MOV A, @R0 ; 取36H单元中的数送累加器A
ANL A, #0FH ; 累加器A中数与立即数#0FH相与
SWAP A
; 累加器A中的高低四位交换
MOV B, A
; 累加器A中数送寄存器B
INC R0
; R0加1
MOV A, @R0 ; 取37H单元中的数送累加器A
ANL A, #0FH ; 累加器A中数与立即数#0FH相与
ORL A, B
; 累加器A与寄存器B相或
作业0:
1.试画出与.或.非三种位逻辑运算真值表,A&B、A|B、~A。
2.试分别分析“按键电平复位电路”在上电和按下按键两种状 况下,如何实现在RST引脚上产生高电平复位脉冲的?(只需要 定性分析工作原理)
3.假设某MCS-51单片机系统外接晶体为11.0592MHz, (1)试计算该单片机的状态周期、状态周期频率、机器周期、 机器周期频率、地址锁存信号ALE的频率。 (2)已知乘法指令MUL AB需要4个机器周期,加法指令ADD A, @Rn需要1个机器周期,试计算单片机执行上述两条指令分别需 要多长时间?
SJMP LP
3 已知单片机晶振频率为12MHz,采用查询方式编写程序,使用T1以 工作方式2产生周期为400us、占空比为50%的连续方波,并由P1.3 口输出.
NOP DJNZ R6,D200MS2 DJNZ R7,D200MS1 RET
6.利用第五题的延时子程序,编写一个主程序,要求在P1.0口上连续输出周期为 2.2S的方波信号,其中高电平宽度为2S,低电平宽度为200mS。(该题为下次实验 内容)
ORG 0000H LJMP 0030H
ORG 0030H LOOP: SETB P1.0
MOV DPTR, #3001H MOVX A, @DPTR ANL A, #0FH SWAP A MOV B, A DEC DPL MOVX A, @DPTR ANL A, #0FH ORL A, B MOV 32H, A
;指针指向3001H单元 ;读取36H单元内的数据 ;屏蔽高四位,保留低四位 ;交换到高4位中 ;暂存到寄存器B中 ;指针指向3000H单元 ;读取3000H单元内的数据 ;屏蔽高四位,保留低四位 ;与寄存器B中数据相或 ;新字节保存到32H单元中
LCALL D2S CLR P1.0 LCALL D200MS SJMP LOOP
定时器作业:
1 已知单片机晶振频率为12MHz,采用查询方式编写程序,使用T0以 工作方式1产生周期为40ms的等宽方波连续脉冲,并由P1.5口输出.
ORG 0000H LJMP 0030H
ORG 0030H
MOV TMOD,#01H ;T0工作方式1
MOV A, #10H
A= 10H
MOV R0, A
R0 = 10H
MOV A, 40H
A = 10H
ADD A, @R0
R0 = 10H
CLR C
C=0
SWAP A
A = 05H
MOV B, #01H
B = 01H
MUL AB
B = 00H
MOV R1, A
R1 = 05H
4.编写程序,将内部数据存储器30H~35H单元的数据传送到外部 数据存储器的2003H~2008H单元.
MOV R0,#30H MOV R2,A ANL A,#0FH MOV @R0,A
INC R0 MOV A,R2
SWAP A ANL A,#0FH MOV @R0,A
RET
;设指针 ;暂存 ;高半字节清0 ;保存数据低位

;保存数据高位
6.试编写一拼字子程序,将外部RAM中3001H单元、3000H单 元的低四位组成一个新的字节,存储到内部数据存储器32H单 元中。
MOV R0,#30H
;指针首地址
MOV DPTR,#2003H ;指针首地址
MOV R1,#06H
;字节个数
LOOP: MOV A,@R0
;取数据
MOVX @DPTR,A
;保存数据
INC R0
;指针加1
INC DPTR
;指针加1
DJNZ R1,LOOP
;判断是否传送完
SJMP $
5.编写程序,将片内RAM60H单元与61H单元的数据交换。
2 已知单片机晶振频率为12MHz,采用查询方式编写程序,使用T0以 工作方式1产生周期为4s的等宽方波连续脉冲,并由P1.4口输出.
ORG 0000H LJMP 0030H
ORG 0030H
MOV TMOD,#01H;T0工作方式1
MOV TH0,#3CH ;T0定时50ms初值
MOV TL0,#0B0H
ORG 0200H D2S: MOV R7,#10 D2S1:MOV R6,#200 D2S2:MOV R5,#249 D2S3:NOP
NOP DJNZ R5,D2S3 NOP DJNZ R6,D2S2 DJNZ R7,D2S1 RET
ORG 0100H D200MS: MOV R7,#200 D200MS1:MOV R6,#250 D200MS2:NOP
ADD:1.085uS
存在计算精度问题.
4.设(20H)=25H,(25H)=10H,P1=CAH
20H
执行下列程序:
MOV R0,#20H
25H
MOV A,@R0
MOV R1,A
90H
MOV B,@R1
MOV @R1,P1
MOV P2,P1
执行结果为:A= 25H ; R1= 25 ;B= 10H ;
x 5 当x128 y #10H 当x 128
x 100 当x128
请编写子程序计算y,其结果存入寄存器R5中。
CJNE MOV SJMP NEQ: JC MOV SUBB MOV SJMP NEQ1: MOV ADD MOV OVER: RET
R2,#128,NEQ R5,#10H OVER NEQ1 A,R2 A,#100 R5,A OVER A,R2 A,#5 R5,A
(1)状态周期:1÷ (11.0592MHz ÷2)=0.18uS 频率: 11.0592MHz ÷2=5.5296MHz
机器周期: 1÷ (11.0592MHz ÷12)=1.085uS 频率: 11.0592MHz ÷12=0.9216MHz
ALE频率: 11.0592MHz ÷6=1.8432MHz (2)MUL:1.085*4=4.34uS
MOV MOV MOV
A,#60HLeabharlann 60H,61H 61H,A6.如何将累加器A中的数据高4位保持不变,低4位位置1? ORL A,#0FH
7.如何将寄存器R2中的数据奇数位清0,偶数位不变?
MOV A,R2 ANL A,#55H MOV R2,A
作业2:
1、已知执行下列程序前外部数据存储器5F73H单元中的数据是#0FCH.执行完本 段指令后(A)=_#0CH_; (DPH)=_#5FH_; (DPL)=_#75H_; (5F74H)=_#0FH_;
2.假定A=85H,R0=20H,(20H)=0AFH,执行指令“ADD A, @R0”后,累加器A的内容为( 34H ),CY的内容为( 1 ), AC的内容为( 1 )。
3.已知内部数据存储器40H单元的内容为#10H,10H单元的内 容为#40H。执行以下指令后,各有关存储器单元、寄存器的 内容是什么?
作业3:
1.利用堆栈操作,将片内RAM 60H单元与61H单元的数据交换。
PUSH 60H PUSH 61H POP 60H POP 61H
2.假设有两个4字节的二进制数,分别存放在40H和50H为起始 地址的连续单元中(低位放在低地址中),编写子程序,求这 两个数的和,结果存放在以50H为起始地址的连续5个单元中。
INC R0
; R0加1
MOVX @R0, A ; 累加器A中的数写入38H单元
该段程序实现字节合并,将36H单元与37H单元中的低4位合并 成一个字节,结果存入38H单元中。
5.试编写一拆字子程序,将累加器A中的高、低四位分开, 分别对应放到31H单元、30H单元的低四位中,并将31H单 元、30H单元的高四位全部补0。
MOV R0,#40
;定时次数
SETB TR0
;启动定时器
LP:JNB TF0,$
;判断T0是否溢出
CLR TF0
;清溢出标志
MOV TH0,#3CH ;重赋初值
MOV TH0,#0B0H
DJNZ R0,LP
;判断溢出次数是否达到40次
CPL P1.4
;P1.4口输出状态取反
相关主题