⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ad.asm

📁 关于单片机的一系列的设计程序
💻 ASM
字号:
LED_PORT   EQU   P0
         DIG_PORT   EQU   P2
         KEY_PORT   EQU   P2
         ADC_CS     BIT   P3.5
         ADC_CLK    BIT   P2.1
         ADC_DI     BIT   P3.6
         ADC_DO     BIT   P3.7
BUFF_LED1	 EQU	22H
		BUFF_LED2	 EQU	23H
		BUFF_LED3	 EQU	24H
		BUFF_LED4	 EQU	25H
		BUFF_LED5	 EQU	26H
		BUFF_LED6	 EQU	27H
		BUFF_LED_LP  EQU	28H
		BUFF_BCD_H   EQU   29H
		BUFF_BCD_M   EQU   2AH
		BUFF_BCD_L   EQU    2BH
        DAT    EQU   2DH
        F_ADC_CLK  BIT  01H
		ORG		0000H
		LJMP		MAIN
		ORG		000BH
		LJMP		T0_INT
		ORG		0023H
		LJMP		000H
		ORG		0100H
MAIN:	MOV	A,	#00H
		MOV	SP,	#40H
		MOV   IE,	#00H
		MOV	P0,	#0FFH
		MOV	P1,	#0FFH
		MOV	P2,	#0FFH
		MOV	P3,	#0FFH
		MOV   R0,#7FH      ;初始化RAM区,
CLR_RAM:  MOV         A,#00H
            MOV         @R0,A
            DJNZ        R0,CLR_RAM
            MOV         TH0,#240     ;T0=4MS
            MOV         TL0,#96
            MOV         BUFF_LED1,#16
            MOV         BUFF_LED2,#16
            MOV         BUFF_LED3,#16
            MOV		TMOD,	#11H
		    SETB		TR0
		    SETB		ET0
		    SETB       EA
		    LCALL		DEL
		    LCALL		DEL
MAIN_LP:   LCALL     ADC_CH1
            LCALL     BIN_BCD
            MOV       BUFF_LED4,BUFF_BCD_H
            MOV       BUFF_LED5,BUFF_BCD_M
            MOV       BUFF_LED6,BUFF_BCD_L
            LCALL     DEL
            JMP       MAIN_LP
;==============延时子程序==============
DEL:     MOV   R5,#02      ;为演示方便,人为插入的延时
DEL01:   MOV   R6,#200
DEL02:   MOV   R7,#200
         DJNZ  R7,$
         DJNZ  R6,DEL02
         DJNZ  R5,DEL01
         RET
;======ADC0832采集第01信道,读者可根据前文ADC0832的时序图======
ADC_CH1:CLR    ADC_CS
        NOP
        SETB   ADC_CS
        NOP
        MOV    R7,#10
        DJNZ   R7,$
        CLR    ADC_CS
        SETB   ADC_DI
        ACALL  PULSE
        ACALL  PULSE
        ACALL  PULSE
        MOV    R2,#8
DRCL1:  ACALL  PULSE
        MOV   C,ADC_DO
        RLC   A
        DJNZ  R2,DRCL1
        MOV   B,A
        RR    A
        MOV   R2,#7
DRCR1:  ACALL  PULSE
        MOV   C,ADC_DO
        RRC    A
        DJNZ   R2,DRCR1
        CJNE  A,B,ADC_CH1
        SETB  ADC_CS
        CLR   ADC_CLK
        SETB  ADC_DO
        SETB  ADC_DI
        RET

ADC_CH0:CLR    ADC_CS        ;ADC0832采集第00信道
        NOP
        SETB   ADC_CS
        NOP
        MOV    R7,#10
        DJNZ   R7,$
        CLR    ADC_CS
        SETB   ADC_DI
        ACALL  PULSE
        ACALL  PULSE
        CLR    ADC_DI
        ACALL  PULSE
        SETB   ADC_DI
        MOV    R2,#8
DRCL0:  ACALL  PULSE
        MOV   C,ADC_DO
        RLC   A
        DJNZ  R2,DRCL0
        MOV   B,A
        RR    A
        MOV   R2,#7
DRCR0:  ACALL  PULSE
        MOV   C,ADC_DO
        RRC    A
        DJNZ   R2,DRCR0
        CJNE  A,B,ADC_CH0
        SETB  ADC_CS
        CLR   ADC_CLK
        SETB  ADC_DO
        SETB  ADC_DI
        RET
;===========ADC0832脉冲子程序============
PULSE:  SETB   F_ADC_CLK     ;置标志位
        SETB   ADC_CLK        ;升高ADC0832的时钟端
        MOV    R3,#4
        DJNZ   R3,$             ;延时
        CLR    ADC_CLK        ;拉低ADC0832的时钟端
        CLR    F_ADC_CLK      ;清除标志位
        MOV    R3,#4
        DJNZ   R3,$
        RET


BIN_BCD:  MOV  B,#10
          DIV  AB
          MOV  BUFF_BCD_L,B
          ;MOV  A,B
          MOV  B,#10
          DIV  AB
          MOV  BUFF_BCD_M,B
          MOV  BUFF_BCD_H,A
          RET

;-------------  T0 INTRRUPT 数码管扫描定时中断---------------------------
T0_INT:  PUSH   ACC
         PUSH   PSW
         PUSH   B
         MOV   TH0,#240     ;T0=4MS
         MOV   TL0,#96
         INC    BUFF_LED_LP
         MOV    A,BUFF_LED_LP
         CJNE   A,#250,CONT_SCAN     ;250*4MS=1S
         MOV    BUFF_LED_LP,#00H
CONT_SCAN:MOV   A,BUFF_LED_LP
          MOV   B,#06
          DIV   AB
          MOV   A,B
          RL    A
          MOV   DPTR,#TAB_SCAN
          JMP   @A+DPTR
TAB_SCAN: AJMP  SCAN_L1
          AJMP  SCAN_L2
          AJMP  SCAN_L3
          AJMP  SCAN_L4
          AJMP  SCAN_L5
          AJMP  SCAN_L6
SCAN_L1:  JNB   F_ADC_CLK,CON_SN_L1
          MOV   DIG_PORT,#01111111B
          MOV   A,BUFF_LED1
          JMP   END_SCAN
CON_SN_L1:MOV   DIG_PORT,#01111101B
          MOV   A,BUFF_LED1
SCAN_L2:  JNB   F_ADC_CLK,CON_SN_L2
          MOV   DIG_PORT,#10111111B
          MOV   A,BUFF_LED2
          JMP   END_SCAN
CON_SN_L2:MOV   DIG_PORT,#10111101B
          MOV   A,BUFF_LED2
          JMP   END_SCAN
SCAN_L3:  JNB   F_ADC_CLK,CON_SN_L3
          MOV   DIG_PORT,#11011111B
          MOV   A,BUFF_LED3
          JMP   END_SCAN
CON_SN_L3:MOV   DIG_PORT,#11011101B
          MOV   A,BUFF_LED3
          JMP   END_SCAN
SCAN_L4:  JNB   F_ADC_CLK,CON_SN_L4
          MOV   DIG_PORT,#11101111B
          MOV   A,BUFF_LED4
          JMP   END_SCAN
CON_SN_L4:MOV   DIG_PORT,#11101101B
          MOV   A,BUFF_LED4
          JMP   END_SCAN
SCAN_L5:  JNB   F_ADC_CLK,CON_SN_L5
          MOV   DIG_PORT,#11110111B
          MOV   A,BUFF_LED5
          JMP   END_SCAN
CON_SN_L5:MOV   DIG_PORT,#11110101B
          MOV   A,BUFF_LED5
          JMP   END_SCAN
SCAN_L6:  JNB   F_ADC_CLK,CON_SN_L6
          MOV   DIG_PORT,#11111011B
          MOV   A,BUFF_LED6
          JMP   END_SCAN
CON_SN_L6:MOV   DIG_PORT,#11111001B
          MOV   A,BUFF_LED6
END_SCAN: MOV   DPTR,#TAB_LED
          MOVC  A,@A+DPTR
          MOV   LED_PORT,A
          POP   B
          POP   PSW
          POP   ACC
          RETI

TAB_LED:	DB 0C0H,0F9H,0A4H,0B0H,99H,92H   ;数码管显示字型表
		DB 82H,0F8H,80H,90H,88H,83H,0A7H
		DB 0A1H,86H,8EH,0FFH

      END


END

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -