单片机.docx
- 文档编号:6082483
- 上传时间:2023-01-03
- 格式:DOCX
- 页数:22
- 大小:18.84KB
单片机.docx
《单片机.docx》由会员分享,可在线阅读,更多相关《单片机.docx(22页珍藏版)》请在冰豆网上搜索。
单片机
3.1;外部数据存储器两个单元000EH,000FH互换
ORG0000H
MOVP2,#00H;P2+P0
MOVR0,#0EH
MOVR1,#0FH
MOVXA,@R0
MOVB,A
MOVXA,@R1
MOVX@R0,A
MOVA,B
MOVX@R1,A
SJMP$
END
3.2;求R(30H)(31H)单元的补码,结果保存在20H,21H
ORG0000H
MOVA,30H;(30H)(31H)
JNBACC.7,ABC
CLRA;10000H-(30H)(31H)
SUBBA,31H
MOV21H,A;保存结果
MOVA,#00H
SUBBA,30H
SETBACC.7
MOV20H,A
ABC:
SJMP$;111111*********
END
3.3;保20H单元中的压缩BCD码,变成非压缩的BCD码,结果放在21H,22H
ORG0000H
MOVA,20H;34H
MOV21H,#00H
MOV22H,#00H
MOVR0,#22H
XCHDA,@R0
SWAPA
MOV21H,A
SJMP$
END
3.4;把one单元的二进制数,变成压缩BCD码,放在HUND,TEN单元
ONEEQU20H
HUNDEQU21H
TENEQU22H
ORG0000H;255
MOVA,ONE
MOVB,#100
DIVAB
MOVHUND,A
MOVA,B
MOVB,#10
DIVAB
SWAPA
ADDA,B
MOVTEN,A
SJMP$
END
3.5;比较40H,41H单元的大小,大的存GR,小的存LE,相等存两个
GREQU30H
LEEEQU31H
ORG0000H
MOVA,40H
SUBBA,41H
JZABC
JCBCD
MOVGR,40H;没借位
MOVLEE,41H
SJMP$
BCD:
MOVGR,41H;有借位
MOVLEE,40H
SJMP$
ABC:
MOVGR,40H;相等操作
MOVLEE,40H
SJMP$
END
3.6;X>0,Y=X;X=0,Y=20H:
X<0,Y+X+5
XEQU31H
YEQU32H
ORG0000H
MOVA,X
JZABC
JBACC.7,BCD
MOVY,X
SJMP$
BCD:
MOVA,X
ADDA,#5
MOVY,A
SJMP$
ABC:
MOVY,20H
SJMP$
END
3.7;根据R3的内容,转身相应的程序
ORG0000H
MOVDPTR,#T_TAB
MOVA,R3
RLA
JMP@A+DPTR
T_TAB:
AJMPPR0
AJMPPR1
AJMPPR2
AJMPPR3
AJMPPR4
AJMPPR5
PR0:
SJMP$
PR1:
NOP
SJMP$
PR2:
SJMP$
PR3:
NOP
NOP
SJMP$
PR4:
SJMP$
PR5:
SJMP$
END
3.8;接收码为3AH,47H,65H,70H,8BH放在20H,R3存放要找的序号
ORG0000H
MOVR3,#0FFH
ABC:
INCR3
MOVDPTR,#T_TAB
MOVA,R3
MOVCA,@A+DPTR
CJNEA,20H,ABC
MOVDPTR,#T_TAB1
MOVA,R3
RLA
JMP@A+DPTR
T_TAB1:
AJMPPR0
AJMPPR1
AJMPPR2
AJMPPR3
AJMPPR4
AJMPPR5
PR0:
SJMP$
PR1:
NOP
SJMP$
PR2:
SJMP$
PR3:
NOP
NOP
SJMP$
PR4:
SJMP$
PR5:
SJMP$
T_TAB:
DB3AH,47H,65H,70H,8BH
END
3.9;为10ms的子程序
ORG0000H
ACALLdelay
SJMP$
delay:
MOVR6,#5
delay2:
MOVR5,#249
delay1:
NOP
NOP
DJNZR5,delay1
DJNZR6,delay2
RET
END
3.10;多字节乘10的程序,数据块放在20单元为首地址,第一个单元放字节数
ORG0000H
MOVR4,#00H
MOVR0,#20H
MOV30H,@R0;字节数
INCR0
ABC:
MOVA,@R0
MOVB,#10
MULAB
ADDA,R4
MOV@R0,A
MOVR4,B
INCR0
DJNZ30H,ABC
MOV@R0,B
SJMP$
END
3.11;设首地址为20H单元里面放字节数,后面就放排序的数
ORG0000H
BBC:
MOVR0,#20H
MOV30H,@R0;字节数
DEC30H;比较次数
INCR0
MOVR1,#22H
CLRF0;交换标记
ABC:
MOVA,@R0;@r0,@R1
CLRC;清C
SUBBA,@R1
JZABC1
JCABC1
XCHA,@R0;交换数据
XCHA,@R1
XCHA,@R0
SETBF0;设置交换标记
ABC1:
INCR0
INCR1
DJNZ30H,ABC
JBF0,BBC
SJMP$
END
3.12;BCD码减法程序
ORG0000H
MOVR0,#20H
MOVA,R0
ADDA,R3;加上字节数
DECA;被减数最后一个单元
MOVR0,A
MOVR1,#30H
MOVA,R1
ADDA,R3;加上字节数
DECA;减数最后一个单元
MOVR1,A
ABC:
MOVA,#9AH
SUBBA,@R1
ADDA,@R0
DAA;调整指令
MOV@R0,A;保存结果到被减数
CPLC
DECR1
DECR0
DJNZR3,ABC
SJMP$
END
3.14;按图写程序
ORG0000H
MOVC,P2.2
ORLC,TF0
ANLC,P1.1
MOV20H.0,C
MOVC,IE1
ORLC,/25H
ANLC,20H.0
ANLC,/26H
MOVP1.3,C
SJMP$
END
3.15;根据逻辑表达式写程序
X0bit00H
X1bit01H
X2bit02H
X3bit03H
X4bit04H
X5bit05H
X6bit06H
X7bit07H
Ybit08H
ORG0000H
MOVC,X0
ANLC,X1
ANLC,X2
MOVF0,C;保存第一项
MOVC,X0
ANLC,/X1
MOV09H,C;为后一项准备
ANLC,/X2
ORLC,F0
CPLC
MOVF0,C;保存前两项的反
MOVC,09H
ANLC,X2
ANLC,X3
ORLC,F0
MOVF0,C;前三项
MOVC,X7
ANLC,/X4
ANLC,/X5
ANLC,/X6
ORLC,F0
MOVY,C
SJMP$
END
3.16;c=a^2+b^2
AAEQU21H
BBEQU22H
CCEQU20H
ORG0000H
MOVA,AA
ACALLPP;获得a平方
MOVCC,A
MOVA,BB
ACALLPP;获得b平方
ADDA,CC;a^2+b^2
DAA
MOVCC,A
SJMP$
PP:
MOVDPTR,#P_TAB
MOVCA,@A+DPTR
RET
P_TAB:
DB0,1,4,9,16H,25H,36H,49H,64H,81H
END
3.17;求两个数据(60H,70H)块中最大值的乘积
ORG0000H
MOVR0,#60H
ACALLF_MAX
MOVB,A;第一个数据块的最大值
MOVR0,#70H
ACALLF_MAX;最大值在A
MULAB
MOV5FH,A
MOV5EH,B
SJMP$
F_MAX:
MOVA,@R0;数据块长度(字节数)
MOVR7,A;R7保存长度
CLRA
ABC2:
INCR0
MOV50H,@R0;
CJNEA,50H,ABC
ABC:
JNCABC1
MOVA,@R0;A中放大数
ABC1:
DJNZR7,ABC2
RET
END
5.1ORG0000H
ABC:
SETBP1.1;输入端要置1
MOVC,P1.1
MOVP1.0,C
SJMPABC
END
5.2ORG0000H
MOVP1,#11111111B
ABC:
MOVA,P1
SWAPA
ORLA,#00001111B
MOVP1,A
SJMPABC
END
5.3ORG0000H
bbb:
JBP1.7,AAA
movr6,#200
abc:
CPLP1.0
ACALLdelay
djnzr6,abc
movr6,#200
bbc:
CPLP1.0
ACALLdelay
ACALLdelay
djnzr6,bbc
AAA:
sjmpbbb
delay:
movr7,#125
delay1:
nop
nop
djnzr7,delay1
ret
end
5.4ORG0000H
MOVDPTR,#Z_TAB
MOVA,#15
MOVCA,@A+DPTR
MOVP1,A
SJMP$
Z_TAB:
DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
DB88H,83H,0c6H,0A1H,86H,8EH
END
5.4ORG0000H
BBC:
MOVDPTR,#Z_TAB
MOVR2,#1
MOVR3,#11111110B
MOVR4,#8
ABC:
MOVA,R2
MOVCA,@A+DPTR
MOVP2,R3
MOVP1,A
ACALLdelay
MOVP1,#0FFH
INCR2
MOVA,R3
RLA
MOVR3,A
DJNZR4,ABC
SJMPBBC
Z_TAB:
DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
DB88H,83H,0c6H,0A1H,86H,8EH
delay:
movr7,#1
delay3:
movr6,#5
delay2:
movr5,#250
delay1:
nop
nop
djnzr5,delay1
djnzr6,delay2
djnzr7,delay3
ret
END
5.5ORG0000H
ABC:
MOVP1,#00001111B
MOVA,P1;按了键,知道哪一行
MOVB,A;B里行信息
MOVP1,#11110000B
MOVA,P1;列信息
ADDA,B;11101110=EEH11011110=DEH
MOVB,A;备份了键值在B
MOVP2,A
MOV7FH,#0FFH;7FH单元存放第几个数
MOVDPTR,#S_TAB
AAA:
INC7FH;指向下一个数
MOVA,7FH
MOVCA,@A+DPTR
CJNEA,B,AAA
;显示数
MOVDPTR,#Z_TAB;10110110
MOVA,7FH
MOVCA,@A+DPTR
MOVP3,A
SJMPABC
Z_TAB:
DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
DB88H,83H,0c6H,0A1H,86H,8EH,0B6H
S_TAB:
DB0EEH,0DEH,0BEH,07EH,0EdH,0DdH,0BdH,07dH
DB0EbH,0DbH,0BbH,07bH,0E7H,0D7H,0B7H,077H,0FFH
END
6.1ORG0000H
AJMPAAA
ORG0013H
AJMPBBB
AAA:
MOVIE,#84H;10000100SETBEASETBEX1
MOVTCON,#04H;00000100
;以上两条指令是设置外中断0(INT0)
AAA1:
MOVP1,#0FFH
SJMPAAA1
BBB:
MOVA,P1
CPLA
SWAPA
MOVP1,A
ACALLDELAY
RETI
delay:
PUSH05H;延时程序
PUSH06H
PUSH07H
MOVR7,#4
delay1:
MOVR6,#250
delay2:
MOVR5,#250
delay3:
NOP
NOP
DJNZR5,delay3
DJNZR6,delay2
DJNZR7,delay1
POP07H
POP06H
POP05H
RET
END
6.1ORG0000H
MOVTMOD,#00100000B
MOVTH1,#230
MOVTL1,#230
SETBTR1;以上设置波特率为1200
MOVSCON,#50H;方式1,且允许的接收
ABC:
JNBRI,$;等待数据的到来
CLRRI
MOVA,SBUF
MOVDPTR,#Z_TAB
MOVCA,@A+DPTR
MOVP2,A
SJMPABC
Z_TAB:
DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
DB88H,83H,0c6H,0A1H,86H,8EH
END
6.2ORG0000H
AJMPAAA
ORG0003H
AJMPBBB
AAA:
MOVIE,#81H;10000100SETBEASETBEX1
MOVTCON,#01H;00000001
;以上两条指令是设置外中断0(INT0)
MOVR4,#3
MOVP1,#0FFH;开机显示0
SJMP$
BBB:
INCR4
MOVDPTR,#Z_TAB
MOVA,R4
MOVCA,@A+DPTR
MOVP1,A
ACALLDELAY
CJNER4,#15,BBB1
MOVR4,#0
BBB1:
SETBP3.3
RETI
delay:
PUSH05H;延时程序
PUSH06H
PUSH07H
MOVR7,#1
delay1:
MOVR6,#250
delay2:
MOVR5,#250
delay3:
NOP
NOP
DJNZR5,delay3
DJNZR6,delay2
DJNZR7,delay1
POP07H
POP06H
POP05H
RET
Z_TAB:
DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
DB88H,83H,0c6H,0A1H,86H,8EH,0B6H
END
7.1ORG0000H
AJMPMAIN0
ORG000BH
AJMPT_0
MAIN0:
;100ms,选择了方式1(16),选择了(定时)
MOVTMOD,#00000001B;T0,T1,TR0
MOVTH0,#3CH;初值65536-50000=15536(3CB0H)->T0
MOVTL0,#0B0H;设起点
SETBTR0;在TCON.4
MOVIE,#10000010B;设置了T0中断
MOVA,#11111110B
sjmp$
T_0:
MOVTH0,#3CH;初值65536-50000=15536(3CB0H)->T0
MOVTL0,#0B0H;设起点
MOVP1,A
RLA
RETI
END
7.2ORG0000H
AJMPMAIN0
ORG000BH
AJMPT_0
ORG001BH
AJMPT_1
MAIN0:
;100ms,T0选择了方式1(16),选择了(定时)T1计数,方式2(8)
MOVTMOD,#01100001B;T0,T1,TR0
MOVTH0,#3CH;初值65536-50000=15536(3CB0H)->T0
MOVTL0,#0B0H;设起点
MOVTH1,#0FBH;100H-5=FB
MOVTL1,#0FBH
SETBTR0;在TCON.4
SETBTR1
MOVIE,#10001010B;设置了T0,T1中断
sjmp$
T_0:
MOVTH0,#3CH;初值65536-50000=15536(3CB0H)->T0
MOVTL0,#0B0H;设起点
CPLP1.0
CPLP1.2
RETI
T_1:
CPLP1.7
RETI
END
7.3ORG0000H
AJMPMAIN0
ORG000BH
AJMPT_0
MAIN0:
;100ms,T0选择计数方式2(8),T1定时,方式2
MOVTMOD,#00100110B;
MOVTH0,#0FFH;初值65536-50000=15536(3CB0H)->T0
MOVTL0,#0FFH;设起点
SETBTR0;启动T0
MOVIE,#10000010B;设置了T0中断
sjmp$
T_0:
SETBP1.0
ACALLdelay500u
CLRP1.0
ACALLdelay500u
CPLP1.1
SJMPT_0
RETI
delay500u:
;100ms,选择了方式1(16),选择了(定时)
MOVTH1,#6;初值65536-50000=15536(3CB0H)->T0
MOVTL1,#6;设起点
SETBTR1;在TCON.4
JNBTF1,$;等TF=1
CLRTF1
RET
END
7.4ORG0000H
AJMPMAIN0
ORG000BH
AJMPT_0
MAIN0:
;T0必须是定时方式1,起动条件为TR0=1,
MOVTMOD,#11100001B;T1选择计数方式2,门控位为1,两个起动条件
MOVTH0,#3CH;50000个脉冲
MOVTL0,#0B0H
SETBTR0
SETBTR1
MOVIE,#10000010B
MOVR2,#10
MAIN1:
MOVA,TL1
CJNEA,#16,ABC
MOVTL1,#1
ABC:
MOVDPTR,#Z_TAB
MOVCA,@A+DPTR
MOVP1,A
SJMPMAIN1
T_0:
MOVTH0,#3CH;50000个脉冲
MOVTL0,#0B0H
DJNZR2,T_0_0
CPLP3.7
MOVR2,#10
T_0_0:
RETI
Z_TAB:
DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
DB88H,83H,0c6H,0A1H,86H,8EH,0B6H
END
8.1a
ORG0000H
MOVTMOD,#00100000B
MOVTH1,#230
MOVTL1,#230
SETBTR1;以上设置波特率为1200
MOVSCON,#01000000B;设置串行发送为方式1
MOVR2,#0
ABC:
MOVSBUF,R2
JNBTI,$;等待TI等于1(发送完成)
CLRTI;清除发送标志
INCR2
ACALLDELAY
CPLP3.2
CJNER2,#16,ABC
SJMP$
delay:
PUSH05H;延时程序
PUSH06H
PUSH07H
MOVR7,#4
delay1:
MOVR6,#250
delay2:
MOVR5,#250
delay3:
NOP
NOP
DJNZR5,delay3
DJNZR6,delay2
DJNZR7,delay1
POP07H
POP06H
POP05H
RET
END
8.2b
ORG0000H
MOVTMOD,#00100000B
MOVTH1,#230
MOVTL1,#230
SETBTR1;以上设置波特率为1200
MOVSCON,#50H;方式1,且允许的接收
ABC:
JNBRI,$;等待数据的到来
CLRRI
MOVA,SBUF
MOVDPTR,#Z_TAB
MOVCA,@A+DPTR
MOVP2,A
SJMPABC
Z_TAB:
DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
DB88H,83H,0c6H,0A1H,86H,8EH
END
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机