每一题预测的都有所依据,考完试再做预测分析,给大家个交代。
之前课本上老师划得也看看吧,当然,我觉着这几个才是重点!
一、分析与编程
- 考点最大的我认为还是第四题
- 编写程序,查找在内部RAM的30H~50H单元中是否有0AAH这一数据。若有,则将51H单元置为“01H”;若未找到,则将51H单元置为“00H”。
答案:
START: MOV R0,#30H
MOV R2,#20H
LOOP: MOV A,@R0
CJNE A,#0AAH,NEXT
MOV 51H,#01H
LJMP EXIT
NEXT: INC R0
DJNZ R2,LOOP
MOV 51H,#00H
EXIT: RET
二、线转法
- 对下图所示的键盘,采用线反转法原理编写出识别某一按键被按下并得到其键号的程序。
KEYIN: MOV P1,#0FH ;反转读键
MOV A,P1
ANL A,#0FH
MOV B,A
MOV P1,#0F0H
MOV A,P1
ANL A,#0F0H
ORL A,B
CJNE A,#0FFH,KEYIN1
RET ;未按键
KEYIN1: MOV B,A ;暂存特征码
MOV DPTR,#KEYCOD ;指向特征码表
MOV R3,#0FFH ;顺序码初始化
KEYIN2: INC R3
MOV A,R3
MOVC A,@A+DPTR
CJNE A,B,KEYIN3
MOV A,R3 ;找到,取顺序码
RET
KEYIN3: CJNE A,#0FFH,KEYIN2 ;未完,再查
RET ;已查完,未找到,以未按键处理
KEYCOD: DB 0E7H,0EBH,0EDH,0EEH ;特征码表
DB 0D7H,0DBH,0DDH,0DEH
DB 0B7H,0BBH,0BDH,0BEH
DB 77H,7BH,7DH,7EH
三、串行口编程
- 若晶体振荡器为11.0592MHz,串行口工作于方式1,波特率为4 800bit/s,写出T1采用方式2作为波特率发生器的方式控制字和初始化程序。
答案:计数初值为FAH,
ANL TMOD,#0FH ;屏蔽高4位
ORL TMOD,#20H ;控制字
MOV TH1,#0FAH ;写入计数初值
MOV TL1,#0FAH
MOV SCON,#40H
四、82c55
- AT89S52单片机扩展了一片82C55,若把82C55的PB口用作输入,PB口的每一位接一个开关,PA口用作输出,每一位接一个发光二极管,请画出电路原理图,并编写出PB口某一位开关接高电平时,PA口相应位发光二极管被点亮的程序。
答:时间问题,我只接了一个演示一下,意思意思,明白就行。
只需要将读到的PB口的值送给PA口就可以满足题目要求了。
ORG 0100H
MIAN: MOV A,#10000010B ;设置PA口方式0输出,PB口方式0输入
MOV DPTR,#0FF7FH ;控制口地址送DPTR
MOVX @DPTR,A ;送方式控制字
MOV DPTR,#0FF7DH ;PB口地址送DPTR
MOVX A,@DPTR ;读入开关信息
MOV DPTR,#0FF7CH ;PA口地址送DPTR
MOVX @DPTR,A ;PA口的内容送PB口点亮相应的二极管
END
五、20分
1.下图中外部扩展的程序存储器和数据存储器容量各是多少?
2.三片存储器芯片的地址范围分别是多少??(单片机发地址时,每次只能选中一片芯片) 。
3.请编写程序(用汇编语言),指令后要有注释,要求:
(1)将内部RAM 40H~4FH中的内容送入1# 6264的前16个单元中;
(2)将2# 6264 的前4个单元的内容送入片内RAM单元50H~53H中;
答:
-
外扩的程序存储器容量为:8kB
外扩的数据存储器容量为:8kB×2=16kB -
程序存储器2764地址范围为: A15 A14 A13
0 0 0
范围为:0000H~1FFFH
数据存储器1#6264地址范围为: A15 A14 A13
0 1 1
范围为:6000H~7FFFH
数据存储器2#6264地址范围为: A15 A14 A13
1 0 1
范围为:A000H~BFFFH -
编写程序
(1)
MOV R0, #40H
MOV DPTR, #6000H ;设置数据指针为6000H
LOOP:MOV A, @R0 ; 将片内RAM(40∼4FH)中的内容送入A中
MOVX @DPTR, A ; 将A→@DPTR中
INC R0
INC DPTR
CJNE R0, #10H,LOOP; 将此子程序,循环执行16次
RET
(2)
MOV R0, #50H
MOV DPTR, #0A000H ; 设置数据指针为A000H
LOOP:MOVX A, @DPTR
MOV @R0, A ; 将外部数据存储器内容送入到片内中
INC R0
INC DPTR
CJNE R0, #04H,LOOP ; 将此子程序循环执行4次
RET