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

📄 sd_adc.asm

📁 SIGMA-DELTA 原理 实现的用LPC900系列单片机的比较器实现16位A/D。 有详细的说明和源代码(汇编格式
💻 ASM
字号:
;SD_ADC.A51   来自 《使用PHILIPS LPC 微控制器实现低成本A/D 转换》 
; http://www.zlgmcu.com   LPC_ADC.PDF 
;2004-2-25 21:00 经过测试,效果非常好,用DT9205A万用表比较相差很小。
; 在c中调用声明为: unsigned int Get_SD_ADC(void);
$NOMOD51
$INCLUDE(reg932.INC)
NAME SimpleADC

;EXTRN DATA (LowByte,HighByte)  用r6 r7 代替后,结果出现跳变的现象消失了。
;EXTRN DATA (CMPModex,CMPbuf,CMPbufaddr)
;所得的结果放在R6(HighByte),R7(LowByte)中
SADC Segment Code  

PUBLIC Get_SD_ADC  ; 在c中调用声明为: unsigned int Get_SD_ADC(void);

rseg SADC
Get_SD_ADC:
        PUSH ACC;
        PUSH PSW;
        PUSH 4;
        PUSH 5;
        
        ANL     P1M1,#0EFH
        ORL     P1M2,#10H       ; AD_CON设为上拉(P1.4)
        
        MOV     PT0AD,#30H     	; 禁止CMPREF、CIN1A数字输入
        ANL     P0M2,#0CFH     	; 设为仅为输入
        ORL     P0M1,#30H
     
        MOV     CMP1,#20H       ; 比较器1的CIN1A为输入端,比较器使能 
        MOV R4,#0;
        MOV R5,#0;
Precharge:
        MOV A,CMP1
        ;ANL A,#02h
        MOV C,ACC.1 ; comparatorflag –> carry
        MOV P1.4,C ; P0.0 = carry/comparator P0.0
        ;Counter
        CLR C
        MOV A,R4
        ADD A,#01h
        MOV R4,A
        MOV A,R5
        ADDC A,#00h
        MOV R5,A
        CJNE A,#076h,Precharge ; Set Prechargecycles
        MOV R4,#00h ; Lowbyte count Measurecycles
        MOV R5,#00h;
        ;MOV LowByte,#00h;
        ;MOV HighByte,#00h;
        MOV r7,#00h;
        MOV r6,#00h;
MAINLOOP:
        ;Sigma
        ;CLR C
;        MOV CMPbuf,CMP1
;        MOV CMPbuf+1,CMP2
;        MOV A,@R0 ; get CMPx indirect
        MOV A,CMP1
        ;ANL A,#02h
        MOV     C,ACC.1;0E1h ; comparatorflag –> carry
        MOV     P1.4,C ; P0.0 = carry/comparator
        CLR A
        ADDC   A, 7; LowByte ; sum carry/comparator high
        MOV    7,A
        MOV A,6
        ADDC A,#00h ; sum carry/comparator high
        MOV 6,A
        ;Counter Measurementcycles
        CLR C
        MOV A,R4
        ADD A,#01h
        MOV R4,A
        MOV A,R5
        ADDC A,#00h
        MOV R5,A
        CJNE A,#076h,MAINLOOP ; Highbyte count Mcycles  //3.02V的次数。
        POP 5;
        POP 4;
        POP PSW;
        POP ACC;
        RET
        END

⌨️ 快捷键说明

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