单片机程序设计题库及答案
更新时间:2023-11-28 06:05:01 阅读量: 教育文库 文档下载
1.实现片外数据存储器数据传送(2000H)-->(2100H) MOV DPTR,#2000H MOVX A,@DPTR MOV DPTR,#2100H MOVX @DPTR,A
2.查表法求Y=X2。设X(0≤X≤15)在片内RAM的20H 单元中,要求查表求Y,存入片内RAM 21H单元。 1) ORG 1000H
SQU: MOV DPTR,#3000H ;确定表首地址(基地址) MOV A,20H ;取 X(变量:偏移量) MOVC A,@A+DPTR ;查表求Y=X2 MOV 21H,A ;保存Y(结果) RET ;子程序结束 … ;其它程序段 ORG 3000H ;常数表格首地址 TAB: DB 00,01,04,09,… ,225 ;平方表 END 2)ORG 1000H ;程序起始地址
SQU: MOV A,20H ;取X ADD A,#3 ;修正偏移量 MOVC A,@A+PC ;查表求Y=X2 (PC=1005H) MOV 21H,A ;存结果 RET ;子程序结束 TAB: DB 00,01,04 … ;平方表 DB 09,… ,225
3.分析下面程序
MOV R0, #0C8H;(R0)=200 CLR P1.7;P1.7为低电平
LOOP: CPL P1.7;P1.7变反(1 μs ) NOP;(1 μs ) NOP;(1 μs )
DJNZ R0,LOOP;(R0)≠0 则转 (2μs)
4.设计一个延时10ms的延时子程序,已知单片机使用的晶振为6MHZ。
机器周期数 ORG 0020H
1 MOV R0, #0AH ;外循环10次 1 DL2: MOV R1, #MT ;内循环MT次 1 DL1: NOP
1 NOP ;空操作指令
2 DJNZ R1, DL1 2 DJNZ R0, DL2 RET
内循环DL1到指令DJNZ R1,DL1 的计算:(1+1+2)ⅹ2μsⅹMT=1000μs
MT=125=7DH 总的延时时间: {1+[1+(1+1+2)ⅹ125+2]ⅹ10}ⅹ2μs=10.062ms 5.试计算延时程序的执行时间
DELAY: MOV R6,#64H (=100) 1 I1: MOV R7,#0FFH(=255) 1 I2: DJNZ R7,I2 2 DJNZ R6,I1 2 RET 2 延时时间计算:(设时钟fOSC=12MHz) T=1us
t=(1×1+1×100+2×100×255+2×100+2×1)×T= 51.303 ms 6. DELAY:MOV R6,#100 1 D1:MOV R7,#10 1 D2:NOP 1 DJNZ R7,D2 2 t=6.606 ms DJNZ R6,D1 2 RET 2
计算延时程序的执行时间(设时钟fOSC=6MHz,T=2us) 。 7.十六进制数转换为ASCII码:
HASC:CJNE A,#0AH,N N:JNC N1(C=0跳N1) ADD A,#30H SJMP SE
N1:ADD A,#37H SE: RET
8.设从片内RAM30H单元和40H单元有两个16字节数,把它们相加,结果放于30H单元开始的位置处(设结果不溢出)。 ORG 1000H MOV R0,#30H MOV R1,#40H MOV R2,#16 CLR C
LOOP:MOV A,@R0 ADDC A,@R1 MOV @R0,A INC R0 INC R1 DJNZ R2,LOOP END
9.按下面公式编写程序,x为无符号数,存在20h单元y存放在21h单元
ORG 0030H MOV A, 20H x?40?x CJNE A, #21H, LOOP1 ?y?20?x?40?2xLOOP1: JC NEXT1
?x CJNE A, #40H, LOOP2 x?20?LOOP2: JNC NEXT2
MOV B, #2 MUL AB AJMP NEXT2 NEXT1: CPL A
NEXT2: MOV 21H, A END
从内部RAM 22h单元开始存有一个无符号数数据块,长度n存于21h中。求出数据块中的最小数,存于20h中。 ORG 0030H
MOV R0, #22H ;数据块起始地址
MOV R1, 21H ;数据个数n MOV 20H,#0FFH ; 最大数 LOOP: MOV A, @R0 ; 取新数
INC R0 ; 为取下一个新数作准备 CJNE A, 20H, LOOP1 ; 与原最大数比较 LOOP1:JNC NEXT ; 大,原最小数保留
MOV 20H, A ; 小,改变最小数 NEXT: DJNZ R1, LOOP ;循环 END
10.ASCII码转换为十六进制数: AHEX:CLR C SUBB A,#30H CJNE A,#0AH,N N: JC N1 SJMP AE
N1: SUBB A,#11H CJNE A,#06H,N2 N2: JNC ERR ADD A,#0AH SJMP AE
ERR: MOV A,#0FFH AE: RET
8位二进制转换成BCD码。(用十进制表达的二进制码) BINBCD1: MOV B, #100
DIV AB
MOV @R0, A INC R0
MOV A, #10
XCH A, B ;(A)=原(B),(B)=10 DIV AB
MOV @R0, A INC R0 XCH AB
MOV @R0, A RET
11.要求每次按动按键,使外接发光二极管LED改变一次亮灭状态。 解:INT0输入按键信号,P1.0输出改变LED状态。 1、跳变触发:每次跳变引起一次中断请求。 ORG 0000H ;复位入口 AJMP MAIN ORG 0003H ;中断入口 AJMP PINT0 ORG 0100H ;主程序
MAIN:MOV SP,#40H ;设栈底 SETB EA ;开总允许开关 单片机 SETB EX0 ;开INT0中断 SETB IT0 ;负跳变触发中断 INT0 H: SJMP H ;执行其它任务 ORG 0200H ;中断服务程序 P1.0 PINT0:CPL P1.0 ;改变LED RETI ;返回主程序
2、电平触发:可避免一次按键引起多次中断响应。 1)软件等待按键释放(撤消低电平);(2)硬件清除中断信号(标志位)。 ORG 0000H ;复位入口 AJMP MAIN ORG 0003H ;中断入口 AJMP PINT0 ORG 0100H ;主程序 MAIN:MOV SP,#40H ;设栈底 SETB EA ;开总允许开关 SETB EX0 ;开INT0中断 CLR IT0 ;低电平触发中断 H: SJMP H ;执行其它任务 ORG 0200H ;中断服务程序 PINT0:CPL P1.0 ;改变LED
WAIT: JNB P3.2,WAIT ;等按键释放(P3.2即INT0) RETI ;返回主程序
假设系统时钟为6MHz,编写定时器T0产生1秒定时的程序。 (1)T0工作方式的确定
定时时间较长,采用哪一种工作方式? 由各种工作方式的特性,可计算出: 方式0最长可定时16.384ms; 方式1最长可定时131.072ms; 方式2最长可定时512s。
+5V 1
选方式1,每隔100ms中断一次,中断10次为1s。 (2)计算计数初值
因为:(216-X)×2×10-6 = 10-1 所以:X=15536=3CB0H
因此:TH0=3CH,TL0=B0H (3)10次计数的实现 采用循环程序法。 (4)程序设计
GATE C/T M1 M0 GATE C/T M1 M0 ORG 0000H
RESET: LJMP MAIN ;上电,转主程序入口T1 MAIN
T0 ORG 000BH ;T0的中断入口 LJMP IT0P ;转T0中断处理程序IT0P ORG 1000H MAIN: MOV SP,#60H ;设堆栈指针
MOV B,#0AH ;设循环次数10次 MOV TMOD,#01H ;设T0工作在方式1 MOV TL0,#0B0H ;给T0设初值 MOV TH0,#3CH SETB TR0 ;启动T0 SETB ET0 ;允许T0中断 SETB EA ;CPU开放中断 HERE: SJMP HERE ;等待中断
ITOP: MOV TL0,#0B0H ;T0中断子程序,重装初值 MOV TH0,#3CH ; DJNZ B,LOOP
CLR TR0 ;1s定时时间到,停止T0工作 LOOP: RETI
12.由P1.0输出方波信号,周期为2ms,设fosc=12MHz。
每隔1ms改变一次P1.0的输出状态。用T0非门控方式1定时。 计算时间常数:X=216-t/T=216-1000/1 =FC18H START:MOV TMOD,#01H MOV TL0,#18H MOV TH0,#0FCH SETB TR0 LOOP: JBC TF0,PTF0 SJMP LOOP PTF0: CPL P1.0 MOV TL0,#18H MOV TH0,#0FCH SJMP LOOP ORG 0000H AJMP MAIN ORG 000BH ;T0定时器 AJMP PT0INT
ORG 0100H MAIN: MOV SP,#60H MOV TMOD,#01H MOV TL0,#18H MOV TH0,#0FCH SETB EA SETB ET0 SETB TR0 HERE: SJMP HERE PT0INT: CPL P1.0 MOV TL0,#18H MOV TH0,#0FCH RETI
13.P1.7驱动LED亮1秒灭1秒地闪烁,设时钟频率为6MHz。
本题采用硬件方式:T0定时,定时10ms; T1计数T0的定时跳变信号P1.0的负跳变次数,计满100个跳变为1秒。(查询方法) T=2μs,X=5×105个T,而最大只能65536个T, 不能满足要求,必须借助硬件计数器或软件循环。T0定时初值: (方式1)t=10ms,X=5000D=1388H,C=(1388H)补=EC78H T1计数初值: (方式2) START: MOV TMOD,#61H MOV TL1,#0CDH MOV TH1,#0CDH CLR P1.0 SETB TR1 LOOP1: CPL P1.7
LOOP2: MOV TL0 ,#78H MOV TH0,#0ECH SETB TR0
LOOP3: JBC TF0,LOOP4 SJMP LOOP3
LOOP4: MOV TL0 ,#78H MOV TH0,#0ECH CPL P1.0 JBC TF1,LOOP1 SJMP LOOP2
P1.7LEDP1.0T180C51+5VT0定时20ms1ST1计数
六、设计题
1.某单片机控制系统有8个发光二极管。试画出89C51与外设的连接图并编程使它们由右向左轮流点亮。
答: 图 (5分) 构思 (3分) MOV A,#80H (1分)
UP:MOV P1,A (1分) RR A (2分) SJMP UP (1分)
2.某控制系统有2个开关K1和K2,1个数码管,当K1按下时数码管加1,K2按下时数码管减1。试画出8051与外设的连接图并编程实现上述要求。 答:图 (5分) 构思 (3分) 程序(4分) ORG 0000H LJMP MAIN ORG 0003H LJMP AINT0 ORG 0013H LJMP BINT1
MAIN: MOV IE,#83H SETB IT0 SETB IT1
MOV R0,#00H MOV DPTR,#TAB UP: MOV A,R0
MOVC A,@A+DPTR MOV P1,A SJMP UP
AINT0: INC R0
CJNE R0,#10,AINT01 MOV R0,#0 AINT01: RETI BINT1: DEC R0
CJNE R0,#0FFH,BINT11 MOV R0,#9 BINT11: RETI
1.已知在累加器A中存放一个BCD数(0~9),请编程实现一个查平方表的子程序。 1.SQR:1NC A
MOVC A,@A+PC RET
TAB:DB 0,1,4,9,16 DB 25,36,49,64,81
2.请使用位操作指令实现下列逻辑操作:BIT=(10H∨P1.0)∧(11H∨CY) 2.ORL C,11H
MOV 12H,C MOV C,P1.0 ORL C,/10H ANL C,12H MOV BIT,C RET
3.已知变量X存于VAR单元,函数值Y存于FUNC单元,按下式编程求Y值。
?1x?0?0x?0??Y=??1x?0
3. MOV A,VAR
CJNE A,#0,COMP
SJMP RES ;x=0,Y=0 COMP:JNC POSI ;x>0,Y=1 MOV A,#0FFH ;x<0,Y=-1 SJMP RES
POSI:MOV A,#01H RES:MOV FUNC,A RET
4.已知在R2中存放一个压缩的BCD码,请将它拆成二个BCD字节,结果存于SUM开始的单元中(低位在前)。 4. MOV R0,#SUM MOV A,R2 ANL A,#OFH
MOV @R0,A ;存低字节BCD MOV A,R2 ANL A,#0F0H SWAP A 1NC R0
MOV @R0,A ;存高字节BCD RET
5.将存于外部RAM 8000H开始的50H数据传送0010H的区域,请编程实现。 5. MOV DPTR,#8000H MOV R0,#10H MOV R2,#50H
LOOP:MOVX A,@DPTR ;取数 MOVX @R0,A ;存数 1NC DPTR 1NC R0
DJNZ R2,LOOP RET
1.已知如图,8155的PA口用于输出,PB口用于输入,PC口用于输出,请:
(1)写出8155的各I/O口的口地址和存储器的地址范围。1.(1) (2)编写出8155初始化程序。B155命令字格式: (2)初始化程序:
MOV DPTR,#0100H MOV A,#0DH MOVX @DPTR,A
2.已知如图并给出下列程序,请在读图并理解程序后回答下列问题: (1)程序功能为_巡回采集8个通道的数据 __。
(2)ADC0809的口地址为___ADC0809口地址为7FF0H~7FF7H(或7FF8~7FFFH)__。 (3)EOC的作用是_EOC为A/D转换结束信号,用来引起中断或查询,以便读取A/D的转换结果_。
(4)程序运行结果存于__外部RAM的A0H~A7H。_。 ADC:MOV DPTR,#7FFOH MOV R0,#0A0H MOV R2,#8 MOV A,#0
LOOP:MOVX @DPTR,A JB P3.3,$
MOVX A,@DPTR MOVX @R0,A 1NC DPTR 1NC R0
DJNZ R2,LOOP AJMP ADC
说明MCS—51单片机的下列各条指令中源操作数的寻址方式(可直接在每条指令后面书写) 1.ANL A,20H 直接寻址 2.ADDC A, #20H 立即寻址 3.JZ rel 相对寻址 4.CLR C 位寻址
5.RRA 寄存器寻址
六、使用简单指令序列完成以下操作(12分)
1.请将片外RAM20H—25H单元清零 MoV R0,#20H MOV R7,#06H CLR A
LOOP:MOVX @R0,A INC R0
DJNZ R7,LOOP
2.请将ROM3000H单元内容送R7 MOV DPTR, #3000H CLR A
MOVC A,@A+DPTR
MOV R7,A
1有一长度为10字节的字符串存放在8031单片机内部RAM中,其首地址为40H。要求将该字符串中每一个字符加偶校验位。(以调用子程序的方法来实现。)
源程序如下:
ORG MOV MOV
1000H R0,#40H R7,#10 A, ① @R0
NEXT: MOV
ACALL SEPA MOV INC
@R0,A R0
正在阅读:
单片机程序设计题库及答案11-28
(2018部编)新人教版九年级下册文言文《鱼我所欲也》《唐雎不辱使05-21
企业突发环境事件风险分级方法(HJ941 - 2018年) - 图文03-09
18和谐02-17
我与蒲公英再见时作文600字07-02
煤矿管理人员岗位危险源及管控措施01-23
六年级5篇完形填空05-15
试用期工作总结大纲(精选多篇)09-27
2015年汽车后市场养护维修行业分析报告10-17
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 题库
- 单片机
- 程序设计
- 答案
- 2019人教版部编本四年级上册第2课《走月亮》第二课时教学设计
- 护理管理试题A卷
- 汉乐府风格论
- 五四红旗团支部申请书
- 谈高中数学课如何实施研究性学习
- 2016五年级数学下册第四单元 分数的意义和性质
- 2018年安全员B证考试题和答案
- 社会学概论 - 名词解释
- Zn2SnO4纳米材料的制备及性能研究 - 图文
- 8#施工组织设计
- 《建筑设备工程》试卷(含答案)
- 日语翻译小记
- 个人与团队管理作业答案2
- 法兰盘 - -零件的机械加工工艺规程及工序的设计计算毕业论文
- 针灸学练习题
- 2013教育心理学试题库(最新)1
- 颈肩腰腿痛试题lyd
- 九年级语文上册第3单元口语交际开一次瓣论会 省优获奖教案语文版7
- 调速器讲解
- 文光才(抽采达标)课件 - 图文