单片机实验汇编源程序.docx
- 文档编号:6030844
- 上传时间:2023-01-03
- 格式:DOCX
- 页数:105
- 大小:31.56KB
单片机实验汇编源程序.docx
《单片机实验汇编源程序.docx》由会员分享,可在线阅读,更多相关《单片机实验汇编源程序.docx(105页珍藏版)》请在冰豆网上搜索。
单片机实验汇编源程序
;软件实验〇:
发光二极管右移显示
org0
ajmpmain
main:
movsp,#5fh
mova,#7fh
loop:
movp0,a
lcalldelay
rra
ajmploop
delay:
movr7,#0
del0:
movr6,#0
del1:
nop
nop
djnzr6,del1
djnzr7,del0
ret
end
;软件实验一:
存储器块清零
;将内部RAM从30H开始至5h单元内容清零
ORG0000H
LJMPSTART
ORG0100H
START:
movr0,#30h
mova,#00h
loop:
mov@r0,a
incr0
cjner0,#60h,loop
sjmp$
END
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;将外部RAM从90H开始至0CH单元内容清零
ORG0000H
LJMPSTART
ORG0100H
START:
movr0,#90h
mova,#00h
loop:
movx@r0,a
incr0
cjner0,#0c0h,loop
sjmp$
END
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;将外部RAM从2000H开始的100个单元内容清零
ORG0000H
LJMPSTART
ORG0100H
START:
movdptr,#2000h
movb,#100
mova,#00h
loop:
movx@dptr,a
incdptr
djnzb,loop
sjmp$
END
;*******************
Blockequ3000h
movdptr,#Block;起始地址
movr0,#0ffh;清256字节
clra
Loop:
movx@dptr,a
incdptr;指向下一个地址
djnzr0,Loop;记数减一
ljmp$
end
;软件实验二:
二进制到BCD转换
程序功能:
单字节二进制数转换成为压缩BCD码程序
条件:
待转换的单字节二进制数放在累加器A中
结果:
转换后的BCD码十位和个位仍放在累加器A中,百位放在R3中
ORG0000H
LJMPSTART
ORG0100H
START:
movB,#100;分离出百位放在R3中
DIVAB
MOVR3,A
mova,#10;余数继续分离
XCHA,B
DIVAB
SWAPA
ORLA,B;将十位和个位组合成压缩BCD码
sjmp$
END
****************************************
;将A拆为三个BCD码,并存入Result开始的叁个单元
Resultequ20h
org0
ljmpStart
BinToBCD:
movb,#100
divab
movResult,a;除以100,得百位数
mova,b
movb,#10
divab
movResult+1,a;余数除以10,得十位数
movResult+2,b;余数为个位数
ret
Start:
movsp,#40h
mova,#123
callBinToBCD
ljmp$
end
;软件实验三:
十进制到ASCII码转换
程序功能:
给出一个压缩BCD码用逻辑运算方法将其转换成ASCII码程序
条件:
待转换的压缩BCD码放在30h中
结果:
转换后的ASCII码放在30h(高位)和31h(低位)单元中
ORG0000H
LJMPSTART
ORG0100H
START:
movA,30H
MOVB,A
ORLA,#30H
MOV31H,A
mova,B
SWAPA
ORLA,#30H
MOV30H,A
sjmp$
END
;*************************
;将A拆为二个ASCII码,并存入Result开始的二个单元
Resultequ20h
org0
ljmpStart
ASCIITab:
db'0123456789ABCDEF';定义数字对应的ASCII表
BinToHex:
movdptr,#ASCIITab
movb,a;暂存A
swapa
anla,#0fh;取高四位
movca,@a+dptr;查ASCII表
movResult,a
mova,b;恢复A
anla,#0fh;取低四位
movca,@a+dptr;查ASCII表
movResult+1,a
ret
Start:
movsp,#40h
mova,#1ah
callBinToHex
ljmp$
end
;软件实验四:
存储块移动
程序功能:
将片外数据存储器2000h单元开始的16个单元的内容移到3000h开始的16个单元中
ORG0000H
LJMPSTART
ORG0100H
START:
movdptr,#2000h
MOVb,#16
movr0,#30h
loop1:
movxa,@dptr
mov@r0,a
incdptr
incr0
djnzb,loop1
movb,#16
movr0,#30h
movdptr,#3000h
loop2:
mova,@r0
movx@dptr,a
incr0
incdptr
djnzb,loop2
sjmp$
END
;*********************************
;移动3000H-->4000H,256字节
movr0,#30h
movr1,#00h
movr2,#40h
movr3,#00h
movr7,#0
Loop:
movdph,r0
movdpl,r1
movxa,@dptr
movdph,r2
movdpl,r3
movx@dptr,a
cjner1,#0ffh,Goon1
incr0
Goon1:
incr1
cjner3,#0ffh,Goon2
incr2
Goon2:
incr3
djnzr7,Loop
ljmp$
end
;软件实验五:
org0
ljmpStart
Func0:
mova,#0
ret
Func1:
mova,#1
ret
Func2:
mova,#2
ret
Func3:
mova,#3
ret
FuncEnter:
adda,acc;ajmp为二字节指令,调用号X2
movdptr,#FuncTab
jmp@a+dptr
FuncTab:
ajmpFunc0
ajmpFunc1
ajmpFunc2
ajmpFunc3
Start:
mova,#0
callFuncEnter
mova,#1
callFuncEnter
mova,#2
callFuncEnter
mova,#3
callFuncEnter
ljmp$
end
;软件实验六:
数据排序
Sizeequ10;数据个数
Arrayequ50h;数据起始地址
Changeequ0;交换标志
Sort:
movr0,#Array
movr7,#Size-1
clrChange
Goon:
mova,@r0
movr2,a
incr0
movB,@r0
cjnea,B,NotEqual
sjmpNext
NotEqual:
jcNext;前小后大,不交换
setbChange;前大后小,置交换标志
xcha,@r0;交换
decr0
xcha,@r0
incr0
Next:
djnzr7,Goon
jbChange,Sort
ljmp$
end
;硬件实验一:
跑马灯
countequ30H
org0
ajmpmain
main:
movsp,#5fh
mova,#7fh
loop:
movp0,a
movcount,#10
lcalldeln10ms
rra
ajmploop
;*******************************************
;
(1)
(2)(3)(4)(5)(6)(7)
;t=1T+(1T+(1T+1T+2T)*25+2T)*100+2T=10303T=10303US=10.03MS
;
;*******************************************
delay10ms:
movr7,#100;1T
(1)
del0:
movr6,#25;1T
(2)
del1:
nop;1T(3)
nop;1T(4)
djnzr6,del1;2T(5)
djnzr7,del0;2T(6)
ret;2T(7)
;入口参数:
COUNT,t=count*10ms
deln10ms:
deln:
lcalldelay10ms
djnzcount,deln
ret
end
跑马灯(左右)
countequ30H
sel0equp3.5
org0
ajmpmain
main:
movsp,#5fh
setbsel0
clrsel0
mova,#0feh
right:
rra
movp0,a
movcount,#10
lcalldeln10ms
jbacc.0,right
left:
rla
movp0,a
movcount,#10
lcalldeln10ms
jbacc.7,left
ajmpright
;*******************************************
;
(1)
(2)(3)(4)(5)(6)(7)
;t=1T+(1T+(1T+1T+2T)*25+2T)*100+2T=10303T=10303US=10.03MS
;
;*******************************************
delay10ms:
movr7,#100;1T
(1)
del0:
movr6,#25;1T
(2)
del1:
nop;1T(3)
nop;1T(4)
djnzr6,del1;2T(5)
djnzr7,del0;2T(6)
ret;2T(7)
;入口参数:
COUNT,t=count*10ms
deln10ms:
deln:
lcalldelay10ms
djnzcount,deln
ret
end
;硬件实验二:
4位LED数码管动态显示
SEL0EQUP3.5
SEL1EQUP3.7
DISP1EQU30H
DISP2EQU31H
DISP3EQU32H
DISP4EQU33H
COUNTEQU34H
SCANEQU20H
SCAN1EQU20H.0
SCAN2EQU20H.1
SCAN3EQU20H.2
SCAN4EQU20H.3
ORG0000H
LJMPMAIN
ORG001BH
AJMPDISPLAY
MAIN:
MOVTMOD,#00010000B
MOVTH1,#0ECH
MOVTL1,#78H
SETBET1
SETBPT1
SETBEA
SETBTR1
MOVCOUNT,#0
CLRSEL0
CLRSEL1
MOVDISP1,#2
MOVDISP2,#0
MOVDISP3,#0
MOVDISP4,#6
WAIT:
AJMPWAIT
DISOUT1:
MOVDPTR,#TAB
MOVCA,@A+DPTR
MOVP0,A
SETBSEL1
NOP
CLRSEL1
RET
DISOUT0:
MOVA,SCAN
MOVP0,A
SETBSEL0
NOP
CLRSEL0
RET
DISPLAY:
MOVTH1,#0ECH
MOVTL1,#78H
PUSHACC
PUSHPSW
INCCOUNT
MOVA,COUNT
CJNEA,#1,NO_DIS1
CLRSCAN1
SETBSCAN2
SETBSCAN3
SETBSCAN4
LCALLDISOUT0
MOVA,DISP1
LCALLDISOUT1
AJMPT1_END
NO_DIS1:
CJNEA,#2,NO_DIS2
SETBSCAN1
CLRSCAN2
SETBSCAN3
SETBSCAN4
LCALLDISOUT0
MOVA,DISP2
LCALLDISOUT1
AJMPT1_END
NO_DIS2:
CJNEA,#3,NO_DIS3
SETBSCAN2
CLRSCAN3
SETBSCAN2
SETBSCAN4
LCALLDISOUT0
MOVA,DISP3
LCALLDISOUT1
AJMPT1_END
NO_DIS3:
MOVCOUNT,#0
SETBSCAN1
SETBSCAN2
SETBSCAN3
CLRSCAN4
LCALLDISOUT0
MOVA,DISP4
LCALLDISOUT1
T1_END:
POPPSW
POPACC
RETI
TAB:
DB0C0H,0F9H,0A4H,0B0H,99H
DB92H,82H,0F8H,80H,90H
END
;硬件实验三:
静态按键、显示实验
SEL0EQUP3.5
SEL1EQUP3.7
DISP1EQU30H
DISP2EQU31H
DISP3EQU32H
DISP4EQU33H
COUNTEQU34H
SCANEQU20H
SCAN1EQU20H.0
SCAN2EQU20H.1
SCAN3EQU20H.2
SCAN4EQU20H.3
SCAN5EQU20H.4
SCAN6EQU20H.5
SCAN7EQU20H.6
ORG0000H
LJMPMAIN
ORG001BH
AJMPDISPLAY
MAIN:
MOVTMOD,#00010000B
MOVTH1,#0ECH
MOVTL1,#78H
SETBET1
SETBPT1
SETBEA
SETBTR1
MOVCOUNT,#0
CLRSEL0
CLRSEL1
MOVDISP1,#2
MOVDISP2,#0
MOVDISP3,#0
MOVDISP4,#6
WAIT:
LCALLKEY_SCAN
JZPRO_END
CJNEA,#1,NO_1
MOVDISP1,#1
MOVDISP2,#1
MOVDISP3,#1
MOVDISP4,#1
AJMPPRO_END
NO_1:
CJNEA,#2,NO_2
MOVDISP1,#2
MOVDISP2,#2
MOVDISP3,#2
MOVDISP4,#2
AJMPPRO_END
NO_2:
CJNEA,#3,NO_3
MOVDISP1,#3
MOVDISP2,#1
MOVDISP3,#1
MOVDISP4,#1
AJMPPRO_END
NO_3:
CJNEA,#4,NO_4
MOVDISP1,#4
MOVDISP2,#1
MOVDISP3,#1
MOVDISP4,#1
AJMPPRO_END
NO_4:
PRO_END:
AJMPWAIT
DISOUT1:
MOVDPTR,#TAB
MOVCA,@A+DPTR
MOVP0,A
SETBSEL1
NOP
CLRSEL1
RET
DISOUT0:
MOVA,SCAN
MOVP0,A
SETBSEL0
NOP
CLRSEL0
RET
KEY_SCAN:
CLRSCAN5
SETBSCAN6
SETBSCAN7
;CLRSCAN6
;CLRSCAN7
LCALLDISOUT0
MOVA,P2
ANLA,#00001111B
CJNEA,#0FH,MAY_KEY
AJMPNO_KEY
MAY_KEY:
LCALLDELAY10ms
MOVA,P2
ANLA,#0FH
CJNEA,#0FH,YES_KEY
AJMPNO_KEY
YES_KEY:
CJNEA,#0EH,NO_KEY1
MOVA,#1
AJMPKEY_END
NO_KEY1:
CJNEA,#0DH,NO_KEY2
MOVA,#2
AJMPKEY_END
NO_KEY2:
CJNEA,#0BH,NO_KEY3
MOVA,#3
AJMPKEY_END
NO_KEY3:
MOVA,#4
AJMPKEY_END
NO_KEY:
MOVA,#0
AJMPKEY_END
KEY_END:
RET
DELAY10ms:
MOVR6,#250
DEL:
MOVR7,#10
DJNZR7,$
DJNZR6,DEL
RET
DISPLAY:
MOVTH1,#0ECH
MOVTL1,#78H
PUSHACC
PUSHPSW
INCCOUNT
MOVA,COUNT
CJNEA,#1,NO_DIS1
CLRSCAN1
SETBSCAN2
SETBSCAN3
SETBSCAN4
LCALLDISOUT0
MOVA,DISP1
LCALLDISOUT1
AJMPT1_END
NO_DIS1:
CJNEA,#2,NO_DIS2
SETBSCAN1
CLRSCAN2
SETBSCAN3
SETBSCAN4
LCALLDISOUT0
MOVA,DISP2
LCALLDISOUT1
AJMPT1_END
NO_DIS2:
CJNEA,#3,NO_DIS3
SETBSCAN2
CLRSCAN3
SETBSCAN2
SETBSCAN4
LCALLDISOUT0
MOVA,DISP3
LCALLDISOUT1
AJMPT1_END
NO_DIS3:
MOVCOUNT,#0
SETBSCAN1
SETBSCAN2
SETBSCAN3
CLRSCAN4
LCALLDISOUT0
MOVA,DISP4
LCALLDISOUT1
T1_END:
POPPSW
POPACC
RETI
TAB:
DB0C0H,0F9H,0A4H,0B0H,99H
DB92H,82H,0F8H,80H,90H
END
;扫描更多的按键
SEL0EQUP3.5
SEL1EQUP3.7
DISP1EQU30H
DISP2EQU31H
DISP3EQU32H
DISP4EQU33H
COUNTEQU34H
SCANEQU20H
SCAN1EQU20H.0
SCAN2EQU20H.1
SCAN3EQU20H.2
SCAN4EQU20H.3
SCAN5EQU20H.4
SCAN6EQU20H.5
SCAN7EQU20H.6
ORG0000H
LJMPMAIN
ORG001BH
AJMPDISPLAY
MAIN:
MOVTMOD,#00010000B
MOVTH1,#0ECH
MOVTL1,#78H
SETBET1
SETBPT1
SETBEA
SETBTR1
MOVCOUNT,#0
CLRSEL0
CLRSEL1
MOVDISP1,#2
MOVDISP2,#0
MOVDISP3,#0
MOVDISP4,#6
WAIT:
LCALLKEY_SCAN
JZWAIT
CJNEA,#1,NO_1
MOVDISP1,#1
MOVDISP2,#1
MOVDISP3,#1
MOVDISP4,#1
AJMPPRO_END
NO_1:
CJNEA,#2,NO_2
MOVDISP1,#2
MOVDISP2,#2
MOVDISP3,#2
MOVDISP4,#2
AJMPPRO_END
NO_2:
CJNEA,#3,NO_3
MOVDISP1,#3
MOVDISP2,#1
MOVDISP3,#1
MOVDISP4,#1
AJMPPRO_END
NO_3:
CJNEA,#4,NO_4
MOVDISP1,#4
MOVDISP2,#1
MOVDISP3,#1
MOVDISP4,#1
AJMPPRO_END
NO_4:
CJNEA,#5,NO_5
MOVDISP1,#5
MOVDISP2,#1
MOVDISP3,#1
MOVDISP4,#1
AJMPPRO_END
NO_5:
CJNEA,#6,NO_6
MOVDISP1,#6
MOVDIS
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 实验 汇编 源程序
![提示](https://static.bdocx.com/images/bang_tan.gif)