单片机程序题
更新时间:2023-12-26 17:27:01 阅读量: 教育文库 文档下载
3.14 已知M1和M2单元中存放有两个16位无符号数X1和X2(低8位在前,高8位在后)试写出X1+X2并把结果放在M1和M1+1单元(低8位在M1单元,高8位在M1+1单元)的程序。设两数之和不会超过16位。 程序如下:
ORG 0500H ;X1的起始地址送R0 MOV R0,#M1 ;X2的起始地址R1 MOV R1,#M2 ;A?X1的低8位
MOV A,@R0 ;A?X1低8位+X2低8位,形成Cy ADD A ,@R1 ;和的低8位存M1 MOV @R0,A ;修改地址指针R0 INC R0 ;修改地址指针R1 INC R1 ;A<--X1高8位
MOV A, @R0 ;A<--X1高8位+X2高8位+Cy ADDC A,@R1 ;和的高8位存M1+1 MOV @R0,A ;停机 SJMP $ END
3.19 已知两个8位无符号乘数分别放在30H和31H单元中,试编出令它们相乘并把积的低8位放入32H单元中、积的高8位放入33H单元的程序。 程序如下: ORG 0100H
MOV R0 ,#30H ;R0<--第一个乘数地址 MOV A ,@R0 ;A<--第一个乘数 INC R0 ;修改乘数地址 MOV B,@R0 ;B<--第二个乘数 MUL AB ;A X B =BA
INC R0 ;修改目标单元地址 MOV @R0,A ;积的低8位--.>32H INC R0 ;修改目标单元地址 MOV @R0,B ;积的高8位--.>33H SJMP $ ;停机 END
3.25 已知M1和M1+1单元中有一个16位的二进制数(M1中为低8位),请通过编程令其扩大二倍(设该数扩大后小于65536)。 程序如下: ORG 1000H
CLR C ;Cy<--0
MOV R1 ,#M1 ;操作数低8位地址送R1 MOV A,@R1 ;A<--操作数低8位
RLC A ;低8位操作数左移,低位补0 MOV @R1,A ;送回M1单元,Cy中为最高位
INC R1 ; R1指向M1+1单元 MOV A,@R1 ;A<--操作数高8位 RLC A ;高8位操作数左移
MOV @R1 , A ;送回M1+1单元 SJMP $ ;停机 END
3.26 在M1和M1+1单元中有两个BCD数,请通过编程将它们紧缩成一个字节并放入M1单元。 程序如下:
ORG 0001H MOV R1,#M1 ;地址M1送R1 MOV A,@R1 ;A<--M1中BCD数 SWAP A, ;BCD1移入高4位 INC R1 ;修改地址指针R1
ORL A,@R1 ;BCD1和BCD2合并后送A MOV M1,A ;送回M1单元 SJMP $ ;停机 END
3.31 已知:外部RAM中以DATA1(DATA1在0页内)为起始地址的数据块以零为结束标志。试通过编程将之传送到以DATA2为起始地址的内部RAM区。 程序如下:
ORG 0500H
MOV R0,#DATA1 ;外部RAM数据块起始地址送R0 MOV R1,#DATA2 ;内部RAM数据块起始地址送R1 LOOP: MOVX A,@R0 ;外部RAM取数送A JZ DONE ;若A=0,则转DONE
MOV @R1,A ;若A≠0,则给内部RAM送数 INC R0 ;修改外部RAM地址指针 INC R1 ;修改内部RAM地址指针 SJMP LOOP ;循环 DONE :SJMP $ ;结束 END
3.32 试编一程序令片内RAM中以DAT为起始地址的数据块中连续10个无符号数相加,并累加送到SUM单元。这里的累加和是不考虑进位的和,所以它们为二进制8位。 程序如下:
ORG 1000H
MOV R2,#0AH ;数据块长度送R2 MOV R0,#DAT ;数据块起始地址送R0 CLR A ;累加器清零 LOOP:ADD A ,@R0 ;加一个数
INC R0 ;修改加数地址指针 DJNZ R2,LOOP ;若R2-1≠0,则LOOP MOV SUM ,A ;存和 SJMP $ ;结束 END
3.35 试利用子程序技术编出令20H—2AH、30H—3EH和40H—4FH三个子域清零的程
序。
ORG 1000H
MOV SP,#70H ;令堆栈的栈底地址为70H MOV R0,#20H ;第一清零区起始地址送R0 MOV R2,#0BH ;第一清零区起始地址送R2 ACALL ZERO ;给20H-2AH区清零
MOV R0,#30H ;第二清零区起始地址送R0 MOV R2,#0FH ;第二清零区单元数送R2 ACALL ZERO ;给40H-4FH单元清零 SJMP $ ;结束 ORG 1050H
ZERO:MOV @R0,#00H ;清零
INC R0 ;修改清零区指针
DJNZ R2,ZERO ;若R2-1≠0,则ZERO RET ;返回 END
3.10 试编出把外部RAM的2050H单元中的内容相交换的程序。 程序如下:
ORG 0500H
MOV DPTR,#2050H
MOVX A,@DPTR ;A<--(2050H)=X MOV R0,A ;存入R0 MOV DPTR,#2060H
MOVX A,@DPTR ;A<--(2060H)=Y XCH A,R0 ;A?R0 MOVX @DPTR,A ;2060H<--X MOV A,R0 ;A<--Y MOV DPTR ,#2050H
MOVX @DPTR,A ;2050H<--Y SJMP $ END
4..2 请编写能把20H单元内两个BCD数变换成相应的ASCII码并放在21H(高位BCD数的ASCII码)和22H(低位BCD数的ASCII码)单元的程序。
程序如下: ORG 0500H
MOV R0,#22H ;R0<--22H
MOV @R0,#00H ;22H单元清零
MOV A,20H ;20H中BCD数送A XCHD A,@R0 ;低位BCD数至22H ORL 22H,#30H ;完成低位BCD数转换 SWAP A ;高位BCD数送抵4位 ORL A ,#30H ;完成高位BCD数转换 MOV 21H, A ;存入21H单元 SJMP $ ;结束
END
4.4 已知20H单元中有一个二进制数,请编程把它转换为3位BCD数,把百位BCD数送入FIRST单元的低4位,十位和个位BCD数放在SECOND单元,十位BCD数在SECOND单元中的高4位。 程序如下:
ORG 0200H FIRST DATA 30H SECOND DATA 31H
MOV A,20H ;被除数送A MOV B,#64H ;除数100送B DIV AB ;A%B=A----B
MOV FIRST ,A ;百位BCD送FIRST MOV A,B ;余数10送B MOV B,#0AH ;除数10送B DIV AB ;A%B=A---B SWAP A ;十位BCD送高4位
ORL A,B ;完成十位和个位BCD数装配 MOV SECOND,A ;存入SECOND单元 SJMP $ ;结束 END
4.5 已知VAR单元内有一自变量X,请按如下条件编出求函数值Y并将它存入FUNC单元的程序。
1 X>0 Y= 0 X=0 -1 X<0
先分支后赋值 先赋值后赋值 ORG 0100H ORG 0100H VAR DATA 30H VAR DATA 30H FUNC DATA 31H FUNC DATA 31H
MOV A,VAR ;A<--X MOV A,VAR ;A<--X JZ DONE ;若X=0,则转DONE JZ DONE ;若X=0,则转DONE JNB ACC.7,POSI ;若X>0,则转POSI MOV R0,#0FFH ;若X≠0,则R0<--1 MOV A, #0FFH ;若X<0.,则A<-- -1 JB ACC.7,NEG ;若X<0,则转NEG SJMP DONE ;转DONE MOV R0,#01H ;若X>0,R0<--1 POSI:MOV A,#01H ;A<--1 NEG :MOV A,R0 ;A<--R0 DONE:MOV FUNC ,A ;存Y值 DONE:MOV FUNC,A;存Y值 SJMP $ SJMP $ END END
4.7 已知两个带符号数分别存入ONE和TWO单元,试编程比较它们的大小,并把大数存入MAX单元。 程序如下:
ORG 0400H ONE DATA 30H
TWO DATA 31H MAX DATA 32H
CLR C ;Cy清零 MOV A,ONE ;X送A
SUBB A,TWO ;X-Y.形成OV标志 JZ DONE ;若X=Y,则DONE
JB ACC.7,NEG ;若X-Y为负,则转NEG JB OV, YMAX ;若OV=1,则YMAX SJMP XMAX ;若OV=0,则XMAX NEG: JB OV, XMAX ;若OV=1,则XMAX YMAX:MOV A, TWO ;Y>X
SJMP DONE ;转DONE XMAX: MOV A, ONE ;X>Y
DONE: MOV MAX ,A ;大数送MAX单元 SJMP $ END
4.8某系有200名学生参加外语统考,若成绩已存放在MCS-51外部RAM起始地址为ENGLISH的连续存储单元,现决定给成绩在95-100分之间的学生颁发A级合格证书,并给成绩在90-94分之间的学生颁发B级合格证书。试编写程序,统计获得A级和B级证书的学生人数,并把统计结果存入内存RAM的GRADA和GRADB单元。 程序如下:
ORG 0600H ENGLISH XDATA 1000H GRADA DATA 20H GRADB DATA 21H
MOV GRADA ,#00H ;GRADA单元清零 MOV GRADB,#00H ;GRADB单元清零 MOV R2,#0C8H ;参赛总人数送R2
MOV DPTR ,#ENGLISH ;学生成绩起始地址送DPTR LOOP: MOVX A,@DPTR ;取某学生成绩到A
CJNE A, #5FH, LOOP1 ;与95作比较,形成Cy LOOP1: JNC NEXT1 ;若A≥95,则NEXT1 CJNE A,#5AH,LOOP2 ;与90作比较
LOOP2: JC NEXT ;若A<90,则NEXT
INC GRADB ;若为B级,则GRADB单元内容加1 SJMP NEXT
NEXT1: INC GRADA ;若A≥95,则GRADA单元内容加1 NEXT: INC DPTR ;修改学生成绩指针 DJNZ R2,LOOP ;若未完,则LOOP SJMP $ ;结束 END
4.9 已知内部RAM的BLOCK单元开始有一无符号数据块,块长在LEN单元。请编写求数据块中各数累加和并存入SUM单元的程序。 程序如下:
inc b
cjne r0, #LEDBuf+6, FillBuf mov DelayT,#30 DispAgain:
call DisplayLED ; 显示 djnz DelayT,DispAgain
ljmp MLoop end 8.外部中断实验
LED equ P1.0 LEDBuf equ 0
ljmp Start org 3 Interrupt0:
push PSW ; 保护现场 cpl LEDBuf ; 取反LED mov c, LEDBuf mov LED, c
pop PSW ; 恢复现场 reti Start:
clr LEDBuf clr LED
mov TCON, #01h ; 外部中断0下降沿触发
mov IE, #81h ; 打开外部中断允许位(EX0)及总中断允许位(EA) ljmp $ end
9.外部中断(急救车与交通灯)
Flash equ 0 ; LED状态 STOP equ 1
SR equ P1.0 ; 南北红灯 SG equ P1.1 ; 南北绿灯 SY equ P1.2 ; 南北黄灯 ER equ P1.3 ; 东西红灯 EG equ P1.4 ; 东西绿灯 EY equ P1.5 ; 东西黄灯 ljmp Start org 3
setb STOP ; 南北, 东西均红灯 reti Start:
mov SP, #70
mov TCON, #01h ; down edge IT0 mov IE, #81h ; enable EA, EX0 setb SR ; 南北, 东西均红灯 clr SY clr SG
setb ER clr EY clr EG clr Loop:
jb setb clr clr clr clr setb mov call jb setb clr clr clr clr clr clr mov Loop1:
mov mov mov call cpl djnz jb clr clr setb setb clr clr mov STOP STOP, AllRed
SR SY SG ER EY EG a, #20 Delay
STOP, AllRed
SR SY SG ER EY EG Flash r7, #9 c, Flash EY, c a, #1 Delay Flash r7, Loop1 STOP, AllRed
SR SY SG ER EY EG a, #20
; 南北红灯, 东西绿灯 ; 南北红灯, 东西黄灯闪; 南北绿灯, 东西红灯 call Delay
jb STOP, AllRed
clr SR ; 东西红灯, 南北黄灯闪 clr SY clr SG
setb ER clr EY clr EG clr Flash mov r7, #9 Loop2:
mov c, Flash mov SY, c mov a, #1 call Delay cpl Flash djnz r7, Loop2 ljmp Loop AllRed:
setb SR clr SY clr SG setb ER clr EY clr EG clr STOP mov a, #10 call Delay ljmp Loop Delay: ; 延时子程序
mov r1, #80H mov r0, #0 DelayLoop:
jb STOP, ExitDelay djnz r0, DelayLoop djnz r1, DelayLoop djnz ACC, Delay ExitDelay: ret End.
10.计数器实验
mov TMOD, #00000101b mov TH0, #0
; 方式1,记数器 mov TL0, #0
setb TR0 ; 开始记数 Loop:
mov P1, TL0 ; 将记数结果送P1口 ljmp Loop End
TEMP EQU 30H ORG 0000H
START: MOV SP,#5FH MOV P2,#73H MOV P1,#0FFH NOKEY:
MOV A,P1 CPL A
JZ NOKEY MOV TEMP,P1 MOV A,P1
CJNE A,TEMP,NOKEY MOV R7,#16 MOV R2,#0
LOOP:MOV A,R2
MOV DPTR,#CODE_P0 MOVC A,@A+DPTR MOV P2,A INC R2 LCALL DL1S
DJNZ R7,LOOP SJMP START DL10ms:
MOV R6,#125 DL1: MOV R5,#98 NOP
DL2: DJNZ R5,DL2 DJNZ R6,DL1 RET
DL1s: MOV R4,#13 DL3: ACALL DL10ms DJNZ R4,DL3 RET
CODE_P0: DB 3FH,06H,5BH,4FH
DB 66H,6DH,7DH,07H
DB 7FH,6FH,77H,7CH
DB 39H,5EH,79H,71H
end
TEMP EQU ORG
START: MOV MOV MOV 30H 0000H SP,#5FH P2,#73H P1,#0FFH
NOKEY:
MOV A,P1 CPL A
JZ NOKEY MOV TEMP,P1 MOV A,P1
CJNE A,TEMP,NOKEY MOV R7,#16 MOV R2,#0
LOOP:MOV A,R2
MOV DPTR,#CODE_P0 MOVC A,@A+DPTR MOV P2,A INC R2 LCALL DL1S
DJNZ R7,LOOP SJMP START DL10ms:
MOV R6,#125 DL1: MOV R5,#98 NOP
DL2: DJNZ R5,DL2 DJNZ R6,DL1 RET
DL1s: MOV R4,#13 DL3: ACALL DL10ms DJNZ R4,DL3 RET
CODE_P0: DB 3FH,06H,5BH,4FH
DB 66H,6DH,7DH,07H
DB 7FH,6FH,77H,7CH
DB 39H,5EH,79H,71H
end
TEMP EQU 30H ORG 0000H
START: MOV SP,#5FH MOV P2,#73H MOV P1,#0FFH NOKEY:
MOV A,P1 CPL A
JZ NOKEY MOV TEMP,P1 MOV A,P1
CJNE A,TEMP,NOKEY MOV R7,#16 MOV R2,#0
LOOP:MOV A,R2
MOV DPTR,#CODE_P0 MOVC A,@A+DPTR MOV P2,A INC R2 LCALL DL1S
DJNZ R7,LOOP SJMP START DL10ms:
MOV R6,#125 DL1: MOV R5,#98 NOP
DL2: DJNZ R5,DL2 DJNZ R6,DL1 RET
DL1s: MOV R4,#13 DL3: ACALL DL10ms DJNZ R4,DL3 RET
CODE_P0: DB 3FH,06H,5BH,4FH
DB 66H,6DH,7DH,07H
DB 7FH,6FH,77H,7CH
DB 39H,5EH,79H,71H
end
正在阅读:
单片机程序题12-26
XX集团培训管理制度12-19
高中暑假随笔11-20
2、例2《余数和除数的关系》04-26
低噪声放大器的设计制作与调试06-04
圆柱圆锥的认识03-31
四等差数列练习题(修改用)03-04
智能电网配电技术及其设备需要具备的条件12-13
用字组词填空04-04
保险公司三大赔付率指标定义及解析01-13
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 单片机
- 程序
- 办学理念、三风一训解读
- (王力)古代汉语复习资料
- 给排水及采暖施工方案
- 薪酬管理各章知识技能总结
- 县审计局优秀共产党员事迹材料
- 推荐下载 申报高级教师材料(小学教师)1-最新
- 浙江省湖州市菱湖中学2013届高三上学期期中考试地理试题
- 2019年工作总结范文--开学三周的总结3篇
- 揭秘央视离职主持生财门道儿
- 计算机组成原理每章课后习题
- BABA Minerals高纯石英砂分部在全球各地的合作伙伴(摘选)
- 阿博留学全面介绍邓恩中学
- 2018-2019年遵义市汇川区高坪镇干坝小学一年级上册语文模拟月考无答案
- 巡逻员岗位职责
- 注射模具复习题(参考)02576
- 上海轨道交通3号线宝钢车辆段改扩建工程 3(宝).501标市政工程监理规划
- 展望中职计算机专业课程考核改革
- 全国重点高中名师精编教案 - 《过小孤山大孤山》教学设计
- 工程量清单计价下的施工项目成本管理研究
- 演出器材项目可行性研究报告(目录) - 图文