当前位置:文档之家› 四川大学出版社 西华大学黄惟公等老师编写的单片机实验答案

四川大学出版社 西华大学黄惟公等老师编写的单片机实验答案

实验1 红黄绿灯控制ORG 0000HRED EQU P1.0YELLOW EQU P1.1GREEN EQU P1.2MAIN: CLR REDSETB YELLOWSETB GREENMOV R0,#40ACALL DELAYSETB REDCLR YELLOWSETB GREENMOV R0,#20ACALL DELAYSETB REDCLR YELLOWCLR GREENMOV R0,#10ACALL DELAYSETB REDSETB YELLOWCLR GREENMOV R0,#30ACALL DELAYAJMP MAIN DELAY: MOV A,R0MOV R7,ADEL0: MOV R6,#200DEL1: MOV R5,#250DEL2: DJNZ R5,DEL2DJNZ R6,DEL1DJNZ R7,DEL0RETEND实验2 LED、LCD显示LED:ORG 0000HAJMP MAINORG 0030HMAIN: CLR P2.4SETB P2.5LOOP: MOV R0,#00HMOV R4,#0AHLP: MOV A,R0MOV DPTR,#TABMOVC A,@A+DPTRMOV P0,ALCALL DELAYINC R0DJNZ R4,LPAJMP LOOPDELAY: MOV R7,#10DEL0: MOV R6,#200DEL1: MOV R5,#250DEL2: DJNZ R5,DEL2DJNZ R6,DEL1DJNZ R7,DEL0RETTAB:DB 0C0h,0F3h,98h,92h,0A3h,86H,84H,0D3H,80H,82H ENDLCD:ORG 0000HAJMP MAINDA T EQU P2.7CLK EQU P2.6MOV R1,#00MAIN: MOV 79H,#10MOV 78H,#10MOV 77H,#10MOV 76H,#10MOV 75H,R1LCALL DISPLAYLCALL DELAYINC R1CJNE R1,#10,MAINMOV R1,#00AJMP MAINDISPLAY: MOV R0,#79HSETB CLKMOV DPTR,#TABLOOP: MOV A,@R0MOVC A,@A+DPTRACALL DISDEC R0CJNE R0,#74H,LOOPSETB DA TSETB CLKRETDIS: MOV R7,#8DIS1: CLR CLKRRC AMOV DA T,CSETB CLKDJNZ R7,DIS1CLR CLKSETB DA TRETDELAY: MOV R4,#10DEL0: MOV R6,#200DEL1: MOV R5,#250DEL2: DJNZ R5,DEL2DJNZ R6,DEL1DJNZ R4,DEL0RETTAB: DB 90H,0F3H,89H,0A1H,0E2H,0A4H DB 84H,0F1H,80H,0A0H,0FFHEND实验3 键盘实验ORG 0000HAJMP MAINORG 0030HMAIN: MOV P0,#0C0HCLR P2.4SETB P2.5MOV R1,#00HKEY1: SETB P2.2JB P2.2,KEY2ACALL DELAYKEY11:SETB P2.2JNB P2.2,KEY11LCALL OPENLEDCLR P1.0SETB P1.1SETB P1.2KEY2: SETB P2.1JB P2.1,KEY3ACALL DELAYKEY22:SETB P2.1JNB P2.1,KEY22CLR P1.1SETB P1.0SETB P1.2KEY3: SETB P2.0JB P2.0,KEY1ACALL DELAYKEY33:SETB P2.0JNB P2.0,KEY33CLR P1.2SETB P1.0SETB P1.1AJMP KEY1OPENLED:INC R1MOV A,R1MOV DPTR,#TABMOVC A,@A+DPTRMOV P0,ACJNE R1,#0AH,LOOPMOV R1,#0LOOP: JNC MAINRETDELAY:MOV R2,#200;延时子程序,约10msDEL0: MOV R3,#125DEL1: DJNZ R3,DEL1DJNZ R2,DEL0RETTAB:DB 0C0h,0F3h,98h,92h,0A3h,86H,84H,0D3H,80H,82H END实验4 定时器中断实验LED:0~9ORG 0000HDIGIT1 EQU P2.5DIGIT2 EQU P2.4AJMP MAINORG 000BHAJMP INTR0ORG 0030HMAIN: MOV R0,#00HMOV R2,#100 ;中断100次为1sMOV P0,#0FFHSETB DIGIT1 ;点亮右边的LEDCLR DIGIT2MOV TMOD,#01H ;T0定时,工作方式1MOV TH0,#0E0H ;T0计数初值MOV TL0,#80HSETB EASETB ET0SETB TR0AJMP $ ;等待中断INTR0: MOV TH0,#0E0H ;T0重赋初值MOV TL0,#80HDJNZ R2,LP;是否中断100次MOV DPTR,#TABMOV A,R0MOVC A,@A+DPTRMOV P0,AMOV R2,#100INC R0CJNE R0,#0AH,LPMOV R0,#00HLP: RETITAB:DB 0C0H,0F3H,98H,92H,0A3H,86H,84H,0D3H,80H,82H ENDLED:00~99ORG 0000HDIGIT1 EQU P2.5DIGIT2 EQU P2.4LED_1 EQU 7FHLED_2 EQU 7EHAJMP MAINORG 000BHAJMP INTR0ORG 0030HMAIN: MOV R0,#00MOV R2,#100 ;中断100次为1sMOV P0,#0FFHMOV TMOD,#01H ;T0定时,工作方式1MOV TH0,#0E0H ;T0计数初值MOV TL0,#80HSETB EASETB ET0SETB TR0AJMP $ ;等待中断INTR0: MOV TH0,#0E0H ;T0重赋初值MOV TL0,#80HDJNZ R2,LP2 ;是否中断100次MOV R2,#100LP1: INC R0CJNE R0,#100,LP2MOV R0,#00LP2: MOV P0,#0FFHACALL DISPLAYRETIDISPLAY:ACALL INV16_10JB F0,DISLED1AJMP DISLED2DISLED1:MOV A,LED_1SETB DIGIT1CLR DIGIT2CLR F0AJMP DISDISLED2:MOV A,LED_2CLR DIGIT1SETB DIGIT2SETB F0DIS: MOV DPTR,#TABMOVC A,@A+DPTRMOV P0,ARETINV16_10:MOV A,R0MOV B,#10DIV ABMOV LED_2,AMOV LED_1,BRETTAB:DB 0C0H,0F3H,98H,92H,0A3H,86H,84H,0D3H,80H,82H ENDLCD:00~99ORG 0000HDA T EQU P2.7CLK EQU P2.6MOV 79H,#10MOV 78H,#10MOV 77H,#10MOV R1,#0FFHMAIN: INC R1CJNE R1,#100,NEXTMOV R1,#00NEXT: LCALL INV16_10LCALL DISPLAYLCALL DELAYAJMP MAINDISPLAY: MOV R0,#79HSETB CLKMOV DPTR,#TABLOOP: MOV A,@R0MOVC A,@A+DPTRACALL DISDEC R0CJNE R0,#74H,LOOPSETB DA TSETB CLKRETDIS: MOV R7,#8DIS1: CLR CLKRRC AMOV DA T,CSETB CLKDJNZ R7,DIS1CLR CLKSETB DA TRETDELAY: MOV R4,#10DEL0: MOV R6,#200DEL1: MOV R5,#250DEL2: DJNZ R5,DEL2DJNZ R6,DEL1DJNZ R4,DEL0RETINV16_10:MOV A,R1MOV B,#10DIV ABMOV 76H,AMOV 75H,BRETTAB: DB 90H,0F3H,89H,0A1H,0E2H,0A4H DB 84H,0F1H,80H,0A0H,0FFHEND实验5 计数器实验000~255:ORG 0000HDA T EQU P2.7CLK EQU P2.6AJMP MAINORG 0030HMAIN: CLR AMOV 79H,#10MOV 78H,#10MOV 77H,AMOV 76H,AMOV 75H,AMOV TMOD,#01100000BMOV TL1,#00HMOV TH1,#00HSETB TR1LOOP: ACALL INV16_10ACALL DISPLAYACALL DELAYAJMP LOOPINV16_10: MOV A,TL1MOV B,#100DIV ABMOV 77H,AMOV A,BMOV B,#10DIV ABMOV 76H,AMOV 75H,BRETDISPLAY: MOV R0,#79HSETB CLKMOV DPTR,#TABLOOP1: MOV A,@R0MOVC A,@A+DPTRACALL DISDEC R0CJNE R0,#74H,LOOP1SETB DA TSETB CLKRETDIS: MOV R7,#8DIS1: CLR CLKRRC AMOV DA T,CSETB CLKDJNZ R7,DIS1CLR CLKSETB DA TRETDELAY: MOV R4,#3DEL0: MOV R6,#200DEL1: MOV R5,#250DEL2: DJNZ R5,DEL2DJNZ R6,DEL1DJNZ R4,DEL0RETTAB: DB 90H,0F3H,89H,0A1H,0E2H,0A4H DB 84H,0F1H,80H,0A0H,0FFHEND00000~99999:实验6 A/D转换器实验ORG 0000HCK1 EQU P3.6DO1 EQU P3.7CS EQU P3.3V_1 EQU 77HV_10 EQU 76HAJMP MAINORG 0030HMAIN:ACALL ADACALL CAL_VOLACALL DISPLAYACALL DELAYAJMP MAINAD:MOV R5,#8CLR CSCLR CK1SETB CK1CLR CK1SETB CK1CLR CK1CLR DO1NOPNOPSETB CK1NOPNOPCLR CK1SETB DO1NOPNOPSETB CK1NOPNOPADA: CLR CK1MOV C,DO1RLC ASETB CK1DJNZ R5,ADASETB CSMOV 20H,ARETCAL_VOL:MOV A,20HMOV B,#50MUL ABMOV A,BMOV B,#10DIV ABADD A,#11MOV V_1,AMOV V_10,BRETDA T EQU P2.7CLK EQU P2.6DISPLAY:MOV 79H,#10MOV 78H,#10MOV 75H,#21MOV R0,#79HSETB CLKMOV DPTR,#TABLOOP:MOV A,@R0MOVC A,@A+DPTRACALL DISDEC R0CJNE R0,#74H,LOOPSETB DA TSETB CLKRETDIS:MOV R7,#8DIS1:CLR CLKRRC AMOV DA T,CSETB CLKDJNZ R7,DIS1CLR CLKSETB DA TRETTAB:DB 90H,0F3H,89H,0A1H,0E2H,0A4H,84H,0F1H,80H,0A0H,0FFH DB 10H,73H,09H,21H,62H,24H,02H,71H,00H,20H,0EAH DELAY:MOV R4,#0L1:MOV R6,#0DJNZ R6,$DJNZ R4,L1RETEND实验7 PC机与单片机的串行通讯实验ORG 0000HAJMP MAINORG 0023HAJMP RECORG 0030HMAIN:CLR P2.4SETB P2.5MOV TMOD,#00100000B;T1方式2MOV TH1,#0FDHMOV TL1,#0FDHMOV SCON,#11010011B;中断方式3,允许串口接收SETB EASETB ESSETB TR1AJMP $REC: JNB RI,$CLR RIMOV A,SBUFTRS: JNB TI,$CLR TIMOV SBUF,AMOV DPTR,#TABMOVC A,@A+DPTRMOV P0,ARETITAB:DB 0C0H,0F3H,98H,92H,0A3H,86H,84H,0D3H,80H,82H END实验8:LED_3 EQU 79HLED_2 EQU 7AHLED_1 EQU 7BHLED_0 EQU 7CHFLAG1 EQU 7FHDQ EQU P3.4TEMPER_L EQU 29HTEMPER_H EQU 28HTEMPER_P EQU 27HORG 0000HAJMP MAINORG 0030HMAIN: LCALL INIT_1820LCALL GET_TEMPERLCALL COV_TLCALL DISPLAYACALL DELAYAJMP MAINCLK EQU P2.6DA T EQU P2.7DISPLAY:MOV LED_3,#21MOV 7DH,#10MOV R0,#7DHSETB CLKMOV DPTR,#TABLOOP: MOV A,@R0MOVC A,@A+DPTRACALL DISDEC R0CJNE R0,#78H,LOOPSETB DA TSETB CLKRETDIS: MOV R7,#8DIS1: CLR CLKRRC AMOV DA T,CSETB CLKDJNZ R7,DIS1CLR CLKSETB DA TRETTAB:DB 90H,0F3H,89H,0A1H,0E2H,0A4HDB 84H,0F1H,80H,0A0H,0FFHDB 10H,73H,09H,21H,62H,24H,04H,71H,00H,20H,9CH DELAY: MOV R2,#5DELAY3: MOV R3,#0DELAY2: MOV R4,#0DELAY1: DJNZ R4,DELAY1DJNZ R3,DELAY2DJNZ R2,DELAY3RETCOV_T: MOV A,TEMPER_LMOV TEMPER_P,#00HMOV C,40HRRC AMOV 38H,CMOV C,41HRRC AMOV 39H,CMOV C,42HRRC AMOV 3AH,CMOV C,43HRRC AMOV 3BH,CMOV TEMPER_L,AMOV A,29HMOV B,#10DIV ABMOV LED_0,AMOV A,#11ADD A,BMOV LED_1,AMOV A,27HMOV DPTR,#POINTTABMOVC A,@A+DPTRMOV LED_2,ARETPOINTTAB:DB 00H,01H,01H,02H,03H,03H,04H,04HDB 05H,06H,06H,07H,08H,08H,09H,09H INIT_1820:SETB DQNOPCLR DQMOV R0,#06BHMOV R1,#03HTSR1:DJNZ R0,TSR1MOV R0,#6BHDJNZ R1,TSR1SETB DQNOPNOPNOPMOV R0,#25HTSR2:JNB DQ,TSR3DJNZ R0,TSR2LJMP TSR4TSR3:SETB FLAG1LJMP TSR5TSR4:CLR FLAG1LJMP TSR7TSR5:MOV R0,#06BHTSR6:DJNZ R0,TSR6TSR7:SETB DQRETGET_TEMPER:SETB DQLCALL INIT_1820JB FLAG1,TSS2RETTSS2:MOV A,#0CCHLCALL WRITE_1820MOV A,#44HLCALL WRITE_1820LCALL DISPLAYLCALL INIT_1820MOV A,#0CCHLCALL WRITE_1820MOV A,#0BEHLCALL WRITE_1820LCALL READ_18200RETWRITE_1820:MOV R2,#8CLR CWR1: CLR DQMOV R3,#6DJNZ R3,$RRC AMOV DQ,CMOV R3,#23DJNZ R3,$SETB DQNOPDJNZ R2,WR1SETB DQRETREAD_18200:MOV R4,#2MOV R1,#29HRE00:MOV R2,#8RE01:CLR CSETB DQNOPNOPCLR DQNOPNOPNOPSETB DQMOV R3,#07RE10:DJNZ R3,RE10MOV C,DQMOV R3,#23HRE20:DJNZ R3,RE20RRC ADJNZ R2,RE01MOV @R1,ADEC R1DJNZ R4,RE00RETEND。

相关主题