logo资料库

单片机实验(汇编)编程举例.doc

第1页 / 共7页
第2页 / 共7页
第3页 / 共7页
第4页 / 共7页
第5页 / 共7页
第6页 / 共7页
第7页 / 共7页
资料共7页,全文预览结束
实验 1 红黄绿灯控制 0000H RED ORG EQU P1.0 RED YELLOW EQU P1.1 GREEN EQU P1.2 MAIN: CLR SETB YELLOW SETB GREEN MOV R0,#40 ACALL DELAY RED SETB YELLOW CLR GREEN SETB MOV R0,#20 ACALL DELAY SETB CLR CLR MOV R0,#10 ACALL DELAY SETB SETB YELLOW CLR MOV ACALL DELAY AJMP MAIN RED YELLOW GREEN RED GREEN R0,#30 DELAY: MOV A,R0 MOV R7,A DEL0: MOV R6,#200 DEL1: MOV R5,#250 DEL2: DJNZ DJNZ DJNZ RET END R5,DEL2 R6,DEL1 R7,DEL0 LED、LCD 显示 实验 2 LED: ORG 0000H AJMP MAIN ORG 0030H MAIN: CLR P2.4 SETB P2.5 LOOP: MOV R0,#00H MOV R4,#0AH LP: MOV A,R0 MOV DPTR,#TAB MOVC A,@A+DPTR MOV P0,A LCALL DELAY INC R0 DJNZ R4,LP AJMP LOOP DELAY: MOV R7,#10 DEL0: MOV R6,#200 MOV R5,#250 DEL1: DJNZ DEL2: DJNZ DJNZ RET R5,DEL2 R6,DEL1 R7,DEL0 TAB:DB 0C0h,0F3h,98h,92h,0A3h,86H,84H,0D3H,80H,82H END LCD: MAIN: ORG 0000H AJMP MAIN DAT EQU P2.7 CLK EQU P2.6 MOV R1,#00 MOV 79H,#10 MOV 78H,#10 MOV 77H,#10 MOV 76H,#10 MOV 75H,R1 LCALL DISPLAY LCALL DELAY INC R1 CJNE R1,#10,MAIN MOV R1,#00 AJMP MAIN DISPLAY: MOV R0,#79H LOOP: DIS: DIS1: SETB CLK MOV DPTR,#TAB MOV A,@R0 MOVC A,@A+DPTR ACALL DIS DEC R0 CJNE R0,#74H,LOOP SETB DAT SETB CLK RET MOV R7,#8 CLR CLK RRC A MOV DAT,C SETB CLK DJNZ R7,DIS1 CLR CLK SETB DAT
实验 3 键盘实验 ORG 0000H AJMP MAIN ORG 0030H MAIN: MOV P0,#0C0H CLR P2.4 SETB P2.5 MOV R1,#00H KEY1: SETB P2.2 JB P2.2,KEY2 ACALL DELAY KEY11:SETB P2.2 JNB P2.2,KEY11 LCALL OPENLED CLR P1.0 SETB P1.1 SETB P1.2 KEY2: SETB P2.1 JB P2.1,KEY3 ACALL DELAY KEY22:SETB P2.1 JNB P2.1,KEY22 CLR P1.1 SETB P1.0 SETB P1.2 KEY3: SETB P2.0 JB P2.0,KEY1 ACALL DELAY KEY33:SETB P2.0 JNB P2.0,KEY33 CLR P1.2 SETB P1.0 SETB P1.1 AJMP KEY1 OPENLED:INC R1 MOV A,R1 MOV DPTR,#TAB MOVC A,@A+DPTR MOV P0,A CJNE R1,#0AH,LOOP MOV R1,#0 LOOP: JNC MAIN RET DELAY:MOV R2,#200;延时子程序,约 10ms DEL0: MOV DEL1: DJNZ DJNZ RET R3,#125 R3,DEL1 R2,DEL0 TAB:DB 0C0h,0F3h,98h,92h,0A3h,86H,84H,0D3H,80H,82H END 实验 4 定时器中断实验 LED:0~9 ORG 0000H DIGIT1 EQU P2.5 DIGIT2 EQU P2.4 AJMP MAIN ORG 000BH AJMP INTR0 ORG 0030H MAIN: MOV R0,#00H MOV R2,#100 MOV P0,#0FFH SETB DIGIT1 CLR DIGIT2 MOV TMOD,#01H MOV TH0,#0E0H MOV TL0,#80H SETB EA SETB ET0 SETB TR0 AJMP $ INTR0: MOV TH0,#0E0H MOV TL0,#80H DJNZ R2,LP MOV DPTR,#TAB MOV A,R0 MOVC A,@A+DPTR MOV P0,A MOV R2,#100 INC R0 CJNE R0,#0AH,LP MOV R0,#00H RETI ;中断 100 次为 1s ;点亮右边的 LED ;T0 定时,工作方式 1 ;T0 计数初值 ;等待中断 ;T0 重赋初值 ;是否中断 100 次 LP: TAB:DB 0C0H,0F3H,98H,92H,0A3H,86H,84H,0D3H,80H,82H END LED:00~99 ORG 0000H DIGIT1 EQU P2.5 DIGIT2 EQU P2.4 LED_1 EQU 7FH LED_2 EQU 7EH AJMP MAIN ORG 000BH AJMP INTR0 ORG 0030H MAIN: MOV R0,#00 MOV R2,#100 ;中断 100 次为 1s
;T0 定时,工作方式 1 ;T0 计数初值 ;等待中断 ;T0 重赋初值 ;是否中断 100 次 MOV P0,#0FFH MOV TMOD,#01H MOV TH0,#0E0H MOV TL0,#80H SETB EA SETB ET0 SETB TR0 AJMP $ INTR0: MOV TH0,#0E0H MOV TL0,#80H DJNZ R2,LP2 MOV R2,#100 INC R0 CJNE R0,#100,LP2 MOV R0,#00 LP1: LP2: MOV P0,#0FFH ACALL DISPLAY RETI DISPLAY:ACALL INV16_10 JB F0,DISLED1 AJMP DISLED2 DISLED1:MOV A,LED_1 SETB DIGIT1 CLR DIGIT2 CLR F0 AJMP DIS DISLED2:MOV A,LED_2 CLR DIGIT1 SETB DIGIT2 SETB F0 MOV DPTR,#TAB MOVC A,@A+DPTR MOV P0,A RET DIS: INV16_10:MOV A,R0 MOV B,#10 DIV AB MOV LED_2,A MOV LED_1,B RET TAB:DB 0C0H,0F3H,98H,92H,0A3H,86H,84H,0D3H,80H,82H END LCD:00~99 ORG 0000H DAT EQU P2.7 CLK EQU P2.6 MOV 79H,#10 MOV 78H,#10 MOV 77H,#10 MAIN: MOV R1,#0FFH INC R1 CJNE R1,#100,NEXT MOV R1,#00 LCALL INV16_10 LCALL DISPLAY LCALL DELAY AJMP MAIN DISPLAY: MOV R0,#79H NEXT: LOOP: DIS: DIS1: SETB CLK MOV DPTR,#TAB MOV A,@R0 MOVC A,@A+DPTR ACALL DIS DEC R0 CJNE R0,#74H,LOOP SETB DAT SETB CLK RET MOV R7,#8 CLR CLK RRC A MOV DAT,C SETB CLK DJNZ R7,DIS1 CLR CLK SETB DAT RET DELAY: MOV R4,#10 DEL0: DEL1: DEL2: MOV R6,#200 MOV R5,#250 DJNZ DJNZ DJNZ RET R5,DEL2 R6,DEL1 R4,DEL0 INV16_10:MOV A,R1 MOV B,#10 DIV AB MOV 76H,A MOV 75H,B RET DB 90H,0F3H,89H,0A1H,0E2H,0A4H DB 84H,0F1H,80H,0A0H,0FFH END TAB: 实验 5 计数器实验 000~255: ORG 0000H DAT EQU P2.7
CLK EQU P2.6 AJMP MAIN ORG 0030H MAIN: CLR A MOV 79H,#10 MOV 78H,#10 MOV 77H,A MOV 76H,A MOV 75H,A MOV TMOD,#01100000B MOV TL1,#00H MOV TH1,#00H SETB TR1 LOOP: ACALL INV16_10 ACALL DISPLAY ACALL DELAY AJMP LOOP INV16_10: MOV A,TL1 MOV B,#100 DIV AB MOV 77H,A MOV A,B MOV B,#10 DIV AB MOV 76H,A MOV 75H,B RET DISPLAY: MOV R0,#79H LOOP1: DIS: DIS1: SETB CLK MOV DPTR,#TAB MOV A,@R0 MOVC A,@A+DPTR ACALL DIS DEC R0 CJNE R0,#74H,LOOP1 SETB DAT SETB CLK RET MOV R7,#8 CLR CLK RRC A MOV DAT,C SETB CLK DJNZ R7,DIS1 CLR CLK SETB DAT RET DELAY: MOV R4,#3 DEL0: MOV R6,#200 DEL1: DEL2: TAB: R5,DEL2 R6,DEL1 R4,DEL0 MOV R5,#250 DJNZ DJNZ DJNZ RET DB 90H,0F3H,89H,0A1H,0E2H,0A4H DB 84H,0F1H,80H,0A0H,0FFH END 00000~99999: 实验 6 ORG 0000H A/D 转换器实验 CK1 EQU P3.6 DO1 EQU P3.7 CS EQU P3.3 V_1 EQU 77H V_10 EQU 76H AJMP MAIN ORG 0030H MAIN:ACALL AD ACALL CAL_VOL ACALL DISPLAY ACALL DELAY AJMP MAIN AD:MOV R5,#8 CLR CS CLR CK1 SETB CK1 CLR CK1 SETB CK1 CLR CK1 CLR DO1 NOP NOP SETB CK1 NOP NOP CLR CK1 SETB DO1 NOP NOP SETB CK1 NOP NOP ADA: CLR CK1 MOV C,DO1 RLC A SETB CK1 DJNZ R5,ADA SETB CS
MOV 20H,A RET CAL_VOL:MOV A,20H MOV B,#50 MUL AB MOV A,B MOV B,#10 DIV AB ADD A,#11 MOV V_1,A MOV V_10,B RET DAT EQU P2.7 CLK EQU P2.6 DISPLAY:MOV 79H,#10 MOV 78H,#10 MOV 75H,#21 MOV R0,#79H SETB CLK MOV DPTR,#TAB LOOP:MOV A,@R0 MOVC A,@A+DPTR ACALL DIS DEC R0 CJNE R0,#74H,LOOP SETB DAT SETB CLK RET DIS:MOV R7,#8 DIS1:CLR CLK RRC A MOV DAT,C SETB CLK DJNZ R7,DIS1 CLR CLK SETB DAT RET TAB:DB 90H,0F3H,89H,0A1H,0E2H,0A4H,84H,0F1H,80H,0A0H,0FFH DB 10H,73H,09H,21H,62H,24H,02H,71H,00H,20H,0EAH MAIN: DELAY:MOV R4,#0 L1:MOV R6,#0 DJNZ R6,$ DJNZ R4,L1 RET END 实验 7 PC 机与单片机的串行通讯实验 ORG 0000H AJMP MAIN ORG 0023H AJMP REC ORG 0030H MAIN:CLR P2.4 SETB P2.5 MOV TMOD,#00100000B;T1 方式 2 MOV TH1,#0FDH MOV TL1,#0FDH MOV SCON,#11010011B;中断方式 3,允许串口接收 SETB EA SETB ES SETB TR1 AJMP $ REC: JNB RI,$ CLR RI MOV A,SBUF TRS: JNB TI,$ CLR TI MOV SBUF,A MOV DPTR,#TAB MOVC A,@A+DPTR MOV P0,A RETI TAB:DB 0C0H,0F3H,98H,92H,0A3H,86H,84H,0D3H,80H,82H END 实验 8: LED_3 EQU 79H EQU 7AH LED_2 EQU 7BH LED_1 EQU 7CH LED_0 EQU 7FH FLAG1 DQ EQU P3.4 TEMPER_L EQU 29H TEMPER_H EQU 28H TEMPER_P EQU 27H ORG 0000H AJMP MAIN ORG 0030H LCALL INIT_1820 LCALL GET_TEMPER LCALL COV_T LCALL DISPLAY ACALL DELAY AJMP MAIN CLK EQU P2.6 DAT EQU P2.7 DISPLAY:MOV LED_3,#21 MOV 7DH,#10 MOV R0,#7DH
SETB CLK MOV DPTR,#TAB LOOP: MOV A,@R0 DIS: DIS1: MOVC A,@A+DPTR ACALL DIS DEC R0 CJNE R0,#78H,LOOP SETB DAT SETB CLK RET MOV R7,#8 CLR CLK RRC A MOV DAT,C SETB CLK DJNZ R7,DIS1 CLR CLK SETB DAT RET TAB:DB 90H,0F3H,89H,0A1H,0E2H,0A4H DB 84H,0F1H,80H,0A0H,0FFH DB 10H,73H,09H,21H,62H,24H,04H,71H,00H,20H,9CH DELAY: MOV R2,#5 DELAY3: MOV R3,#0 DELAY2: MOV R4,#0 DELAY1: DJNZ R4,DELAY1 DJNZ R3,DELAY2 DJNZ R2,DELAY3 RET COV_T: MOV A,TEMPER_L MOV TEMPER_P,#00H MOV C,40H RRC A MOV 38H,C MOV C,41H RRC A MOV 39H,C MOV C,42H RRC A MOV 3AH,C MOV C,43H RRC A MOV 3BH,C MOV TEMPER_L,A MOV A,29H MOV B,#10 DIV AB MOV LED_0,A MOV A,#11 ADD A,B MOV LED_1,A MOV A,27H MOV DPTR,#POINTTAB MOVC A,@A+DPTR MOV LED_2,A RET POINTTAB:DB 00H,01H,01H,02H,03H,03H,04H,04H DB 05H,06H,06H,07H,08H,08H,09H,09H INIT_1820:SETB DQ NOP CLR DQ MOV R0,#06BH MOV R1,#03H TSR1:DJNZ R0,TSR1 MOV R0,#6BH DJNZ R1,TSR1 SETB DQ NOP NOP NOP MOV R0,#25H TSR2:JNB DQ,TSR3 DJNZ R0,TSR2 LJMP TSR4 TSR3:SETB FLAG1 LJMP TSR5 TSR4:CLR FLAG1 LJMP TSR7 TSR5:MOV R0,#06BH TSR6:DJNZ R0,TSR6 TSR7:SETB DQ RET GET_TEMPER:SETB DQ LCALL INIT_1820 JB FLAG1,TSS2 RET TSS2:MOV A,#0CCH LCALL WRITE_1820 MOV A,#44H LCALL WRITE_1820 LCALL DISPLAY LCALL INIT_1820 MOV A,#0CCH LCALL WRITE_1820 MOV A,#0BEH LCALL WRITE_1820 LCALL READ_18200 RET
WRITE_1820: MOV R2,#8 CLR C WR1: CLR DQ MOV R3,#6 DJNZ R3,$ RRC A MOV DQ,C MOV R3,#23 DJNZ R3,$ SETB DQ NOP DJNZ R2,WR1 SETB DQ RET READ_18200:MOV R4,#2 MOV R1,#29H RE00:MOV R2,#8 RE01:CLR C SETB DQ NOP NOP CLR DQ NOP NOP NOP SETB DQ MOV R3,#07 RE10:DJNZ R3,RE10 MOV C,DQ MOV R3,#23H RE20:DJNZ R3,RE20 RRC A DJNZ R2,RE01 MOV @R1,A DEC R1 DJNZ R4,RE00 RET END
分享到:
收藏