1、单片机实验源汇编程序单片机实验源汇编程序这是配套使用EL-8051-III型单片机实验箱的汇编代码T1.1NAME T1_1CSEG AT 0000H LJMP STARTCSEG AT 4100HSTART: MOV A,#0FEHLOOP: RL A MOV P1,A LCALL DELAY JMP LOOPDELAY: MOV R1,#127DEL1: MOV R2,#200DEL2: DJNZ R2,DEL2 DJNZ R1,DEL1 RETT1.2NAME T1_2OUTPORT EQU 0CFA0HCSEG AT 0000H LJMP STARTCSEG AT 4100HSTART
2、: MOV P1,#0FFH MOV A,P1 MOV DPTR,#OUT_PORT MOVX DPTR,A JMP START ENDT2NAME T2CSEG AT 0000H LJMP STARTCSEG AT 4100HSTART: SETB P1.0 SETB P1.1 MOV A,P1 ANL A,#03H MOV DPTR,#TAB MOVC A,A+DPTR JMP A+DPTRTAB: DB PRG0-TAB DB PRG1-TAB DB PRG2-TAB DB PRG3-TABPRG0: MOV P1,#0FFH JMP STARTPRG1: MOV P1,#0F2H AC
3、ALL DELAY MOV P1,#0FFH ACALL DELAY JMP STARTPRG2: MOV P1,#0CDH ACALL DELAY MOV P1,#0FFH ACALL DELAY JMP STARTPRG3: MOV P1,#00H JMP STARTDELAY: MOV R1,#5DEL1: MOV R2,#200DEL2: MOV R3,#126DEL3: DJNZ R3,DEL3 DJNZ R2,DEL2 DJNZ R1,DEL1 RETENDT3NAME T3PORT EQU 0CFA0HCSEG AT 0000H LJMP STARTCSEG AT 4100HST
4、ART: MOV A,#11H ACALL DISP ACALL DE3SLLL: MOV A,#12H ACALL DISP ACALL DE10S MOV A,#10H ACALL DISP MOV R2,#05HTTT: MOV A,#14H ACALL DISP ACALL DE02S MOV A,#10H ACALL DISP ACALL DE02S DJNZ R2,TTT MOV A,#11H ACALL DISP ACALL DE02S MOV A,#21H ACALL DISP ACALL DE10S MOV A,#01H ACALL DISP MOV R2,#05HGGG:
5、MOV A,#41H ACALL DISP ACALL DE02S DJNZ R2,GGG MOV A,#03H ACALL DISP ACALL DE02S JMP LLLDE10S: MOV R5,#100 JMP DE1DE3S: MOV R5,#30 JMP DE1DE02S: MOV R5,#02DE1: MOV R6,#200DE2: MOV R7,#126DE3: DJNZ R7,DE3 DJNZ R6,DE2 DJNZ R5,DE1 RETDISP: MOV DPTR,#PORT CPL A MOVX DPTR,A RET ENDT4NAME T4CSEG AT 0000H L
6、JMP STARTCSEG AT 4100HINPORT EQU 0CFA8HOUTPORT EQU 0CFB0HSTART: MOV DPTR,#INPORTLOOP: MOVX A,DPTR MOV DPTR,#OUTPORT MOVX DPTR,A MOV R7,#10HDEL0: MOV R6,#0FFHDEL1: DJNZ R6,DEL1 DJNZ R7,DEL0 JMP STARTENDT5NAME T5OUTPORT EQU 0CFB0HSAVE EQU 55HCSEG AT 0000H LJMP STARTCSEG AT 4003H LJMP INTCSEG AT 4100HS
7、TART: SETB IT0 SETB EX0 SETB EA MOV A,#11H MOV SAVE,A ACALL DISP ACALL DE3SLLL: MOV A,#12H MOV SAVE,A ACALL DISP ACALL DE10S MOV A,#10H MOV SAVE,A ACALL DISP MOV R2,#05HTTT: MOV A,#14H MOV SAVE,A ACALL DISP ACALL DE02S MOV A,#10H MOV SAVE,A ACALL DISP ACALL DE02S DJNZ R2,TTT MOV A,#11H MOV SAVE,A AC
8、ALL DISP ACALL DE02S MOV A,#21H MOV SAVE,A ACALL DISP ACALL DE10S MOV A,#01H MOV SAVE,A ACALL DISP MOV R2,#05HGGG: MOV A,#41H MOV SAVE,A ACALL DISP ACALL DE02S MOV A,#01H MOV SAVE,A ACALL DISP ACALL DE02S DJNZ R2,GGG MOV A,#11H MOV SAVE,A ACALL DISP ACALL DE02S JMP LLLDE10S: MOV R5,#100 JMP DE1DE3S:
9、 MOV R5,#30 JMP DE1DE02S: MOV R5,#02DE1: MOV R6,#200DE2: MOV R7,#126DE3: DJNZ R7,DE3 DJNZ R6,DE2 DJNZ R5,DE1 RETINT: CLR EA PUSH ACC PUSH PSW MOV A,R5 PUSH ACC MOV A,#11H ACALL DISPDEL10S: MOV R3,#100DEL1: MOV R4,#200DEL2: MOV R5,#126DEL3: DJNZ R5,DEL3 DJNZ R4,DEL2 DJNZ R3,DEL1 MOV A,SAVE ACALL DISP
10、 POP ACC MOV R5,A POP PSW POP ACC SETB EA RETIDISP: MOV DPTR,#OUTPORT CPL A MOVX DPTR,A RETENDT6NAME T6OUTPORT EQU 0CFB0HCSEG AT 0000H LJMP STARTCSEG AT 401BH LJMP INTCSEG AT 4100HSTART: MOV A,#01H MOV R1,#03H MOV R0,#5H MOV TMOD,#10H MOV TL1,#0AFH MOV TH1,#03CH ORL IE,#88H SETB TR1LOOP1: CJNE R0,#0
11、0,DISP MOV R0,#5H INC R1 CJNE R1,#31H,LOOP2 MOV R1,#03HLOOP2: MOV A,R1 MOVC A,A+PC JMP DISP DB 01H,03H,07H,0FH,1FH,3FH,7FH,0FFH,0FEH,0FCH DB 0F8H,0F0H,0E0H,0C0H,80H,00H,0FFH,00H,0FEH DB 0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,07FH,0BFH,0DFH DB 0EFH,0F7H,0FBH,0FDH,0FEH,00H,0FFH,00HDISP: MOV P1,A JMP LOOP1INT:
12、CLR TR1 DEC R0 MOV TL1,#0AFH MOV TH1,#03CH SETB TR1 RETI ENDT7NAME T7CSEG AT 0000H LJMP STARTCSEG AT 4100HPA EQU 0CFA0HPB EQU 0CFA1HPCTL EQU 0CFA3HSTART: MOV DPTR,#PCTL MOV A,#82H MOVX DPTR,ALOOP: MOV DPTR,#PB MOVX A,DPTR MOV DPTR,#PA MOVX DPTR,A MOV R7,#10HDEL0: MOV R6,#0FFHDEL1: DJNZ R6,DEL1 DJNZ
13、R7,DEL0 JMP LOOPENDT8NAME t8 ;8255键盘实验 PA EQU 0CFA0H PB EQU PA+1 PC0 EQU PB+1 PCTL EQU PC0+1 CSEG AT 4000H LJMP START CSEG AT 4100H START: MOV 42H,#0FFH ;42H中放显示的字符码,初值为0FFH STA1: MOV DPTR,#PCTL ;设置控制字,ABC口工作于方式0 ;AC口输出而B口用于输入 MOV A,#82H MOVX DPTR,A LINE: MOV DPTR,#PC0 ;将字符码从C口输出显示 MOV A,42H CPL A M
14、OVX DPTR,A MOV DPTR,#PA ;从A口输出全零到键盘的列线 MOVX DPTR,A MOV DPTR,#PB ;从B口读入键盘行线值 MOVX A,DPTR MOV 40H,A ;行线值存于40H中 CPL A ;取反后如为全零 ;表示没有键闭合,继续扫描 JZ LINE MOV R7,#10H ;有键按下,延时10MS去抖动 DL0: MOV R6,#0FFH DL1: DJNZ R6,DL1 DJNZ R7,DL0 MOV DPTR,#PCTL ;重置控制字,让A为输入,BC为输出 MOV A,#90H MOVX DPTR,A MOV A,40H MOV DPTR,#PB
15、 ;刚才读入的行线值取出从B口送出 MOVX DPTR,A MOV DPTR,#PA ;从A口读入列线值 MOVX A,DPTR MOV 41H,A ;列线值存于41H中 CPL A ;取反后如为全零 JZ STA1 ;表示没有键按下 MOV DPTR,#TABLE ;TABLE表首地址送DPTR MOV R7,#18H ;R7中置计数值16 MOV R6,#00H ;R6中放偏移量初值 TT: MOVX A,DPTR ;从表中取键码前半段字节,行线值与实 CJNE A,40H,NN1 ;际输入的行线值相等吗?不等转NN1 INC DPTR ;相等,指针指向后半字节,即列线值 MOVX A,D
16、PTR ;列线值与实际输入的列线值 CJNE A,41H,NN2 ;相等吗?不等转NN2 MOV DPTR,#CHAR ;相等,CHAR表基址和R6中的偏移量 MOV A,R6 ;取出相应的字符码 MOVC A,A+DPTR MOV 42H,A ;字符码存于42H BBB: MOV DPTR,#PCTL ;重置控制字,让AC为输出,B为输入 MOV A,#82H MOVX DPTR,A AAA: MOV A,42H ;将字符码从C口送到二极管显示 MOV DPTR,#PC0 CPL A MOVX DPTR,A MOV DPTR,#PA ;判断按下的键是否释放 CLR A MOVX DPTR,A
17、 MOV DPTR,#PB MOVX A,DPTR CPL A JNZ AAA ;没释放转AAA MOV R5,#2 ;已释放则延时0.2秒,减少总线负担 DEL1: MOV R4,#200 DEL2: MOV R3,#126 DEL3: DJNZ R3,DEL3 DJNZ R4,DEL2 DJNZ R5,DEL1 JMP START ;转START NN1: INC DPTR ;指针指向后半字节即列线值 NN2: INC DPTR ;指针指向下一键码前半字节即行线值 INC R6 ;CHAR表偏移量加一 DJNZ R7,TT ;计数值减一,不为零则转TT继续查找 JMP BBB TABLE: DW 0FE06H,0FD06H,0FB06H,0F706H;TABLE为键值表,每个键位占 DW 0BF06H,07F06H,0FE05H,0FD05H; 两个字节,第一个字节为行 DW 0EF05H,0DF05H,0BF05H,07F05H ;线值,第二个为列线值 DW 0FB03H,0F703H,0EF03H,0DF03H; CHAR: DB 00H,01H,02H,03H,04H,05H,06H,07H,08H,09H ;字符码表 DB 0AH,0BH,0CH,0DH,0EH,0FH,10H,11H,12H,13H DB 14H,15H,16H,17H END
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1