单片机实验源汇编程序.docx

上传人:b****6 文档编号:7769111 上传时间:2023-01-26 格式:DOCX 页数:14 大小:16.55KB
下载 相关 举报
单片机实验源汇编程序.docx_第1页
第1页 / 共14页
单片机实验源汇编程序.docx_第2页
第2页 / 共14页
单片机实验源汇编程序.docx_第3页
第3页 / 共14页
单片机实验源汇编程序.docx_第4页
第4页 / 共14页
单片机实验源汇编程序.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

单片机实验源汇编程序.docx

《单片机实验源汇编程序.docx》由会员分享,可在线阅读,更多相关《单片机实验源汇编程序.docx(14页珍藏版)》请在冰豆网上搜索。

单片机实验源汇编程序.docx

单片机实验源汇编程序

单片机实验源汇编程序

这是配套使用EL-8051-III型单片机实验箱的汇编代码

T1.1

 

NAMET1_1

CSEGAT0000H

LJMPSTART

CSEGAT4100H

START:

MOVA,#0FEH

LOOP:

RLA

MOVP1,A

LCALLDELAY

JMPLOOP

DELAY:

MOVR1,#127

DEL1:

MOVR2,#200

DEL2:

DJNZR2,DEL2

DJNZR1,DEL1

RET

T1.2

 

NAMET1_2

OUTPORTEQU0CFA0H

CSEGAT0000H

LJMPSTART

CSEGAT4100H

START:

MOVP1,#0FFH

MOVA,P1

MOVDPTR,#OUT_PORT

MOVX@DPTR,A

JMPSTART

END

 

T2

 

NAMET2

CSEGAT0000H

LJMPSTART

CSEGAT4100H

START:

SETBP1.0

SETBP1.1

MOVA,P1

ANLA,#03H

MOVDPTR,#TAB

MOVCA,@A+DPTR

JMP@A+DPTR

TAB:

DBPRG0-TAB

DBPRG1-TAB

DBPRG2-TAB

DBPRG3-TAB

PRG0:

MOVP1,#0FFH

JMPSTART

PRG1:

MOVP1,#0F2H

ACALLDELAY

MOVP1,#0FFH

ACALLDELAY

JMPSTART

PRG2:

MOVP1,#0CDH

ACALLDELAY

MOVP1,#0FFH

ACALLDELAY

JMPSTART

PRG3:

MOVP1,#00H

JMPSTART

DELAY:

MOVR1,#5

DEL1:

MOVR2,#200

DEL2:

MOVR3,#126

DEL3:

DJNZR3,DEL3

DJNZR2,DEL2

DJNZR1,DEL1

RET

END

 

T3

 

NAMET3

PORTEQU0CFA0H

CSEGAT0000H

LJMPSTART

CSEGAT4100H

START:

MOVA,#11H

ACALLDISP

ACALLDE3S

LLL:

MOVA,#12H

ACALLDISP

ACALLDE10S

MOVA,#10H

ACALLDISP

MOVR2,#05H

TTT:

MOVA,#14H

ACALLDISP

ACALLDE02S

MOVA,#10H

ACALLDISP

ACALLDE02S

DJNZR2,TTT

MOVA,#11H

ACALLDISP

ACALLDE02S

MOVA,#21H

ACALLDISP

ACALLDE10S

MOVA,#01H

ACALLDISP

MOVR2,#05H

GGG:

MOVA,#41H

ACALLDISP

ACALLDE02S

DJNZR2,GGG

MOVA,#03H

ACALLDISP

ACALLDE02S

JMPLLL

DE10S:

MOVR5,#100

JMPDE1

DE3S:

MOVR5,#30

JMPDE1

DE02S:

MOVR5,#02

DE1:

MOVR6,#200

DE2:

MOVR7,#126

DE3:

DJNZR7,DE3

DJNZR6,DE2

DJNZR5,DE1

RET

DISP:

MOVDPTR,#PORT

CPLA

MOVX@DPTR,A

RET

END

 

T4

 

NAMET4

CSEGAT0000H

LJMPSTART

CSEGAT4100H

INPORTEQU0CFA8H

OUTPORTEQU0CFB0H

START:

MOVDPTR,#INPORT

LOOP:

MOVXA,@DPTR

MOVDPTR,#OUTPORT

MOVX@DPTR,A

MOVR7,#10H

DEL0:

MOVR6,#0FFH

DEL1:

DJNZR6,DEL1

DJNZR7,DEL0

JMPSTART

END

 

T5

 

NAMET5

OUTPORTEQU0CFB0H

SAVEEQU55H

CSEGAT0000H

LJMPSTART

CSEGAT4003H

LJMPINT

CSEGAT4100H

START:

SETBIT0

SETBEX0

SETBEA

MOVA,#11H

MOVSAVE,A

ACALLDISP

ACALLDE3S

LLL:

MOVA,#12H

MOVSAVE,A

ACALLDISP

ACALLDE10S

MOVA,#10H

MOVSAVE,A

ACALLDISP

MOVR2,#05H

TTT:

MOVA,#14H

MOVSAVE,A

ACALLDISP

ACALLDE02S

MOVA,#10H

MOVSAVE,A

ACALLDISP

ACALLDE02S

DJNZR2,TTT

MOVA,#11H

MOVSAVE,A

ACALLDISP

ACALLDE02S

MOVA,#21H

MOVSAVE,A

ACALLDISP

ACALLDE10S

MOVA,#01H

MOVSAVE,A

ACALLDISP

MOVR2,#05H

GGG:

MOVA,#41H

MOVSAVE,A

ACALLDISP

ACALLDE02S

MOVA,#01H

MOVSAVE,A

ACALLDISP

ACALLDE02S

DJNZR2,GGG

MOVA,#11H

MOVSAVE,A

ACALLDISP

ACALLDE02S

JMPLLL

DE10S:

MOVR5,#100

JMPDE1

DE3S:

MOVR5,#30

JMPDE1

DE02S:

MOVR5,#02

DE1:

MOVR6,#200

DE2:

MOVR7,#126

DE3:

DJNZR7,DE3

DJNZR6,DE2

DJNZR5,DE1

RET

INT:

CLREA

PUSHACC

PUSHPSW

MOVA,R5

PUSHACC

MOVA,#11H

ACALLDISP

DEL10S:

MOVR3,#100

DEL1:

MOVR4,#200

DEL2:

MOVR5,#126

DEL3:

DJNZR5,DEL3

DJNZR4,DEL2

DJNZR3,DEL1

MOVA,SAVE

ACALLDISP

POPACC

MOVR5,A

POPPSW

POPACC

SETBEA

RETI

DISP:

MOVDPTR,#OUTPORT

CPLA

MOVX@DPTR,A

RET

END

 

T6

 

NAMET6

OUTPORTEQU0CFB0H

CSEGAT0000H

LJMPSTART

CSEGAT401BH

LJMPINT

CSEGAT4100H

START:

MOVA,#01H

MOVR1,#03H

MOVR0,#5H

MOVTMOD,#10H

MOVTL1,#0AFH

MOVTH1,#03CH

ORLIE,#88H

SETBTR1

LOOP1:

CJNER0,#00,DISP

MOVR0,#5H

INCR1

CJNER1,#31H,LOOP2

MOVR1,#03H

LOOP2:

MOVA,R1

MOVCA,@A+PC

JMPDISP

DB01H,03H,07H,0FH,1FH,3FH,7FH,0FFH,0FEH,0FCH

DB0F8H,0F0H,0E0H,0C0H,80H,00H,0FFH,00H,0FEH

DB0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,07FH,0BFH,0DFH

DB0EFH,0F7H,0FBH,0FDH,0FEH,00H,0FFH,00H

DISP:

MOVP1,A

JMPLOOP1

INT:

CLRTR1

DECR0

MOVTL1,#0AFH

MOVTH1,#03CH

SETBTR1

RETI

END

 

T7

 

NAMET7

CSEGAT0000H

LJMPSTART

CSEGAT4100H

PAEQU0CFA0H

PBEQU0CFA1H

PCTLEQU0CFA3H

START:

MOVDPTR,#PCTL

MOVA,#82H

MOVX@DPTR,A

LOOP:

MOVDPTR,#PB

MOVXA,@DPTR

MOVDPTR,#PA

MOVX@DPTR,A

MOVR7,#10H

DEL0:

MOVR6,#0FFH

DEL1:

DJNZR6,DEL1

DJNZR7,DEL0

JMPLOOP

END

 

T8

 

NAMEt8;8255键盘实验

PAEQU0CFA0H

PBEQUPA+1

PC0EQUPB+1

PCTLEQUPC0+1

CSEGAT4000H

LJMPSTART

CSEGAT4100H

START:

MOV42H,#0FFH;42H中放显示的字符码,初值为0FFH

STA1:

MOVDPTR,#PCTL;设置控制字,ABC口工作于方式0

;AC口输出而B口用于输入

MOVA,#82H

MOVX@DPTR,A

LINE:

MOVDPTR,#PC0;将字符码从C口输出显示

MOVA,42H

CPLA

MOVX@DPTR,A

MOVDPTR,#PA;从A口输出全零到键盘的列线

MOVX@DPTR,A

MOVDPTR,#PB;从B口读入键盘行线值

MOVXA,@DPTR

MOV40H,A;行线值存于40H中

CPLA;取反后如为全零

;表示没有键闭合,继续扫描

JZLINE

MOVR7,#10H;有键按下,延时10MS去抖动

DL0:

MOVR6,#0FFH

DL1:

DJNZR6,DL1

DJNZR7,DL0

MOVDPTR,#PCTL;重置控制字,让A为输入,BC为输出

MOVA,#90H

MOVX@DPTR,A

MOVA,40H

MOVDPTR,#PB;刚才读入的行线值取出从B口送出

MOVX@DPTR,A

MOVDPTR,#PA;从A口读入列线值

MOVXA,@DPTR

MOV41H,A;列线值存于41H中

CPLA;取反后如为全零

JZSTA1;表示没有键按下

MOVDPTR,#TABLE;TABLE表首地址送DPTR

MOVR7,#18H;R7中置计数值16

MOVR6,#00H;R6中放偏移量初值

TT:

MOVXA,@DPTR;从表中取键码前半段字节,行线值与实

CJNEA,40H,NN1;际输入的行线值相等吗?

不等转NN1

INCDPTR;相等,指针指向后半字节,即列线值

MOVXA,@DPTR;列线值与实际输入的列线值

CJNEA,41H,NN2;相等吗?

不等转NN2

MOVDPTR,#CHAR;相等,CHAR表基址和R6中的偏移量

MOVA,R6;取出相应的字符码

MOVCA,@A+DPTR

MOV42H,A;字符码存于42H

BBB:

MOVDPTR,#PCTL;重置控制字,让AC为输出,B为输入

MOVA,#82H

MOVX@DPTR,A

AAA:

MOVA,42H;将字符码从C口送到二极管显示

MOVDPTR,#PC0

CPLA

MOVX@DPTR,A

MOVDPTR,#PA;判断按下的键是否释放

CLRA

MOVX@DPTR,A

MOVDPTR,#PB

MOVXA,@DPTR

CPLA

JNZAAA;没释放转AAA

MOVR5,#2;已释放则延时0.2秒,减少总线负担

DEL1:

MOVR4,#200

DEL2:

MOVR3,#126

DEL3:

DJNZR3,DEL3

DJNZR4,DEL2

DJNZR5,DEL1

JMPSTART;转START

NN1:

INCDPTR;指针指向后半字节即列线值

NN2:

INCDPTR;指针指向下一键码前半字节即行线值

INCR6;CHAR表偏移量加一

DJNZR7,TT;计数值减一,不为零则转TT继续查找

JMPBBB

TABLE:

DW0FE06H,0FD06H,0FB06H,0F706H;TABLE为键值表,每个键位占

DW0BF06H,07F06H,0FE05H,0FD05H;两个字节,第一个字节为行

DW0EF05H,0DF05H,0BF05H,07F05H;线值,第二个为列线值

DW0FB03H,0F703H,0EF03H,0DF03H;

CHAR:

DB00H,01H,02H,03H,04H,05H,06H,07H,08H,09H;字符码表

DB0AH,0BH,0CH,0DH,0EH,0FH,10H,11H,12H,13H

DB14H,15H,16H,17H

END

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 理学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1