东北电力大学单片机例题

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

东北电⼒⼤学单⽚机例题
⼀、填空题
1.已知PSW中的(RS1)=0、(RS0)=0,则⼯作寄存器R7所对应内部RAM的直接地址为__07_____H
2.8051内部RAM共有____21_____个特殊功能寄存器
3.设累加器A的内容为38H,则执⾏指令SWAP A之后,A的内容为_____83____H 4.执⾏SUBB A,#0指令后,布尔处理器C的内容为_____0______
5.8051外部中断1的中断请求标志位是_______IE1_______
6.8051单⽚机复位后,P1⼝锁存器的内容为_____FF_______H
7.8051单⽚机定时/计数器⽅式1是___16___位的定时/计数器
8. 8051单⽚机的特殊功能寄存器采⽤的寻址⽅式是_____直接寻址_______
9.若使⽤8051单⽚机内部的程序存储器,则EA引脚应接_____⾼电平______
10.8051单⽚机PC、DPTR都是___16___位的寄存器
⼆. 单项选择题
1. 指令MOV A,20H 源操作数的寻址⽅式是( D )
A. 寄存器寻址
B. 寄存器间接寻址
C. ⽴即寻址
D. 直接寻址
2. 8051有⼀个串⼝,它是( B )
A.SPI
B. UART
C. CAN
/doc/b1142d95daef5ef7ba0d3ce8.html ART
3.为了能实现数模多维同步转换,DAC0832的数据输⼊是( A )
A.2级缓冲
B.单缓冲
C.三态隔离
D.OC门
4. 执⾏MO VC A,@D P T R指令时,控制信号线有效的是( C )
A.RD
B.WR
C.PSEN
D. EA
5. 8051单⽚机功能扩展时地址总线低8位与数据总线的复⽤⼝为( A )
A. P0
C. P2
D. P3
6. 当TCON控制寄存器中的IT0置1时,则触发外部中断0的信号为( B )IT0置0时,则触发外部中断0的信号为( D )
A.上升沿触发
B.下降沿触发
C.⾼电平触发
D.低电平触发
7. 下列那⼀条是正确的伪指令( C )
A.P EQU 20
B. PP :EQU 88H
C. SDA BIT P1.0
D. ST DB 123H
8. ⼦程序返回的指令是( A ),中断⼦程序返回的指令是( B )
A.RET
B. RETI
C.LJMP
D. AJMP
9.下列那⼀条是正确指令( D )
A.MOV R0,R1
B.MOV @R3,A
C.ADD R1,A
D.MOV @R1,20H
10. 6264是容量为8K字节的( D )。

A.EPROM B.PEROM C.EEPROM D.静态RAM
三、编程题
1编写程序,将20H单元存放的⼆进制原码数,变换为补码存放到21H单元ORG 0100H
MOV A, 20H
JBC ACC.7, NEXT
CLP A
ADD A, #1
NEXT: MOV 21H, A
SJMP $
2编写程序,将内部RAM30H中的⼆进制数转化为BCD数(0-255),并存⼊内部RAM 31H 和32H单元中
CLR A
MOV 21H,A
MOV 22H,A
MOV 23H,A
MOV R0,#23H
MOV A, 30H
LOOP: MOV B,#10
CJNE A,#0,NEZ
MOV A,22H
SW AP A
ORL A,23H
MOV 32H, A
MOV 31H, 21H
SJMP END1
NEZ: DIV AB
MOV @R0,B
DEC R0
SJMP LOOP
END1:SJMP $
3有⼀ASCII(⾮压缩)BCD数(0~9)存放在内部RAM的60H单元,要求编制⼀段程序,根据变量值求其平⽅值,并存⼊⽚内RAM的61H单元。

ORG 1000H
START:MOV DPTR,#SQTAB
MOV A,60H
MOVC A,@A+DPTR
MOV 61H,A
SJMP $
SQTAB: DB 0,1,4,9,16,25,36,49,64,81
END
4编写程序把内部RAM 50H单元开始的16个字节数据传送到70H单元开始的内存区。

要求程序的机器码从4000H单元开始存放。

ORG 4000H
MOV R0,#50H
MOV R1,#70H
LOOP: MOV A,@R0
MOV @R1,A
INC R1
INC R0
DJNE R7,LOOP
SJMP $
END
5编制数据块传送程序,将内部RAM 20H单元开始存放的20个字符串,传送到外部RAM 4000H开始单元
ORG 0100H
MOV R0,#20H
MOV DPTR,#4000H
MOV R7,#20
LOOP: MOV A,@R0
MOVX @DPTR,A
INC DPTR
INC R0
DJNE R7,LOOP
SJMP $
END
6内部RAM50H开始的10个ASCII表⽰的字符,编程把它们送到70H开始的RAM.要求传送时检查有⽆字符“$”(24H).若有换成空格(20H)
ORG 0000H
MOV R0,#50H
MOV R1,#70H
MOV R2,#10
LOOP: MOV A,@R0
CJNE A,#24H,LOOP1
MOV A,#20H
LOOP1: MOV @R1,A
INC R0
INC R1
DJNZ R2,LOOP
7内部RAM50H开始有16个ASCII码表⽰的⼗进制数0-9⽤寄存器R2统计“0”的个数
ORG 100H
MOV R0,#50H
MOV R2,#00H
LOOP: MOV A,@R0
CJNE A,#30H,NEXT
INC R2
NEXT: INC R0
DJNZ R1,LOOP
END
8内部RAM50H开始有16个字节⽆符号数,找出其中最⼤值存⼊60H单元(求最⼩值为把相应语句改成其后红⾊的语句) ORG1000H
MOV R0, #50H
MOV R2, #16
MOV 60H, #00H (MOV 60H,#0FFH)
LOOP: MOV A,@R0
CJNE A,60H, NEXT
SJMP NECH
NEXT: JC NCEH (JNC NCEH)
MOV 60H, A
NECH: INC R0
DJNZ R2, LOOP
SJMP $
END
9编⼀多字节⼗进制加法,被加数从内部RAM40H开始,长度为8字节,40H为低位,加数从50H开始,长度为8字节,50H为低位,结果放回被加数位置(多字节⼆进制加法就是把DA A去掉)
MOV R0,#40H
MOV R1,#50H
MOV R2,#8
CLR C
BADD: MOV A,@R0
ADDC A,@R1
DA A
MOV @R0,A
INC R0
INC R1
DJNZ R2, BADD
10位运算指令的应⽤。

根据题给的式⼦应⽤与ORL、或ORL、⾮/、异或XRL指令编程。

11把内部RAM中20H单元中的1个字
节⼗六进制数转换为2位ASCII码,存放在R0指⽰的两个单元中
MAIN:MOV A,20H
SWAP A
PUSH ACC
ACALL HEASC
POP ACC
MOV @R0,A
INC R0
PUSH 20H
ACALL HEASC
POP ACC
MOV @R0,A
SJMP $
HEASC:MOV R1,SP
DEC R1
DEC R1
XCH A,@R1
ANL A,#0FH
ADD A,#2
MOVC A,@A+PC
XCH A,@R1
RET
ASCTAB:DB 30H,31H,32H,33H,34H,35H,36H,37H
DB 38H,39H,41H,42H,43H,44H,45H,46H
12将多位⼗六进制数转换成ASCII码。

设地址指针R0指向⼗六进制数地址,R2中存放字数,R1指向要存放的ASCII码的地址。

HTASC:MOV A,@R0 ;取低4位⼆进制数
ANL A,#0FH
MOV DPTR,#ASCTAB
MOVC A,@A+DPTR ;查表
MOV @R1,A;存ASCII码
INC R1
MOV A,@R0 ;取⼗六进制⾼4位
SWAP A
ANL A,#0FH
MOVC A,@A+DPTR ;查表
MOV @R1,A;存ASCII
INC R0 ;指向下⼀单元
INC R1
DJNZ R2,HTASC ;字节数存于R2
ASCTAB:DB 30H,31H,32H,33H,34H,35H,36H,37H
DB 38H,39H,41H,42H,43H,44H,45H,46H
四、定时器应⽤例题
设8051单⽚机fosc=6MHz, 利⽤定时器T0⼯作⽅式1定时中断的⽅法,使P1.2输出周期为100ms的⽅波解:fosc=6MHz, 则机器周期为2µs
输出100ms的⽅波,则定时时间为50ms
计数初值为:X=50ms/机器周期=50×1000/2µs=25000=61A8H
ORG 0000H
LJMP MAIN ;跳转到主程序
ORG 000BH ;T0的中断⼊⼝地址(若是T1为001B)
LJMP DVT0 ;转向中断服务程序
ORG 0100H
MAIN:MOV TMOD,#01H ;置T0⼯作于⽅式1
MOV TH0,#61H ;装⼊计数初值
MOV TL0,#0A8H
SETB ET0 ;T0开中断
SETB EA;CPU开中断
SETB TR0 ;启动T0
SJMP $ ;等待中断
DVT0:CPL P1.0 ;P1.0取反输出
MOV TH0,#61H ;重新装⼊计数值
MOV TL0,#0A8H
RETI ;中断返回
END
五、8255例题
8051与8255A的接⼝结线如右下图所⽰,编制程序,当K0闭合时,点亮LED0;
MAIN: MOV DPTR,#6003H (此为控制⼝地址,根据图中连线计算⽽得) MOV A,#90H ;控制字送A
MOVX @DPTR,A ;控制字送控制⼝
LOP: MOV DPTR,#6000H;A⼝地址送DPTR
MOVX A,@DPTR ;A⼝输⼊
JB ACC.7, NEXT
MOV DPTR,#6002H;C⼝地址
MOV A,#0FFH ;灯不亮
MOVX @DPTR,A ;C⼝输出
SJMP END1
NEXT: MOV DPTR,#6002H;C⼝地址
MOV A,#0FFH ;灯不亮
MOVX @DPTR,A ;C⼝输出
END1: SJMP LOP
END
六、0809例题
8051与0809的接⼝结线如右下图所⽰,编制程序实现对8路模拟信号轮流采样⼀次,并依次把转换结果存储到⽚内RAM20H 起始地址的连续单元中,通过查询EOC判断AD转换是否完成。

MAIN: MOV R1,#20H ;置数据区⾸地址
MOV DPTR,#BFF8H ;指向0通道
MOV R7,#08H ;置通道数
LOOP: MOVX @DPTR,A;启动A/D转换
JNB P3.3, $
JB P3.3, $ ;查询A/D转换结束
MOVX A,@DPTR;读取A/D转换结果
MOV @R1,A;存储数据
INC DPTR;指向下⼀个通道
INC R1;修改数据区指针
JNZ R7,LOOP;8个通道转换完否?END
七、0832应⽤(⽣成锯齿波)
MOV DPTR,#7FFFH ;⼝地址送DPTR MOV A,#0
LOP: MOVX @DPTR,A
INC A
NOP
NOP
SJMP LOP
END
IN0 IN7。

相关文档
最新文档