中文字幕无码不卡一区二区三区_少妇被又大又粗又爽毛片久久黑人_91精品国产在热久久无毒不卡_久久久久久亚洲综合网站

技術(shù)熱線: 4007-888-234
設(shè)計(jì)開發(fā)

專注差異化嵌入式產(chǎn)品解決方案 給智能產(chǎn)品定制注入靈魂給予生命

開發(fā)工具

提供開發(fā)工具、應(yīng)用測(cè)試 完善的開發(fā)代碼案例庫(kù)分享

技術(shù)支持

從全面的產(chǎn)品導(dǎo)入到強(qiáng)大技術(shù)支援服務(wù) 全程貼心伴隨服務(wù),創(chuàng)造無限潛能!

新品推廣

提供新的芯片及解決方案,提升客戶產(chǎn)品競(jìng)爭(zhēng)力

新聞中心

提供最新的單片機(jī)資訊,行業(yè)消息以及公司新聞動(dòng)態(tài)

一個(gè)簡(jiǎn)單的利用PC機(jī)的串口讀取ICD1板上AD0電壓的程序

更新時(shí)間: 2019-03-23
閱讀量:2050

十年專注單片機(jī)方案開發(fā)的方案公司英銳恩,分享一個(gè)簡(jiǎn)單的利用PC機(jī)的串口讀取ICD1板上AD0電壓的程序。英銳恩現(xiàn)提供服務(wù)產(chǎn)品涉及主控芯片:8位單片機(jī)、16位單片機(jī)、32位單片機(jī)及各類運(yùn)算放大器等。

用的是PIC16F877A單片機(jī)來調(diào)試的,下面是PIC的ASM文件,由于是用于其它的目的,用在這里有些代碼是多余的!
;
;用于串口實(shí)驗(yàn)的程序,主要的是10位
;
  INCLUDE
  LIST P=16F877

BANK3 MACRO
BSF STATUS,RP0
BSF STATUS,RP1                   ;體3
ENDM
BANK2 MACRO
BCF STATUS,RP0;
BSF STATUS,RP1                   ;
ENDM                             ;
BANK1 MACRO
BSF STATUS,RP0
BCF STATUS,RP1                   ;
ENDM
BANK0 MACRO
BCF STATUS,RP0
BCF STATUS,RP1                   ;體0

ENDM

READCUNT    EQU   70H             ;
COUNT1      EQU   72H             ;
TEMP        EQU   73H             ;
FEIFA       EQU   74H             ;
TEMP1       EQU   75H             ;
TEMP2       EQU   76H             ;
CNT         EQU   77H             ;
SOU         EQU   78H             ;
SOUH        EQU   79H             ;
RLT         EQU   7AH             ;
TEMP3       EQU   7BH;

   ORG   0000H                    ;
   NOP                            ;
   GOTO  STATUP                   ;主要程序的入口
   ORG   004H                     ;中斷的入口

HIGHISR  
   BTFSS    PIR1,RCIF     ;判斷是否為USART中斷
   RETFIE                 ;不是中斷返回
   MOVF     RCREG,0       ;取RCREG的數(shù)值到W中,同時(shí)RCIF變?yōu)榱?br/>   MOVWF    TEMP2         ;暫時(shí)保存W中的數(shù)值用于下個(gè)轉(zhuǎn)換時(shí)用A
   SUBLW    41H           ;是否為回車,這個(gè)指令是取電壓指令,對(duì)應(yīng)鍵盤上的回車
   BTFSS    STATUS,Z      ;
   GOTO     FEEDBACK;NEXT1         ;不是;目前的處理是出錯(cuò)時(shí)返回原來的數(shù)值
   CALL     DYZH          ;是CALL 電壓轉(zhuǎn)換
   RETFIE
;   GOTO     FEEDBACK      ;
;   BTFSS    FEIFA,0       ;
;  GOTO     CALL1;
;   GOTO     CALL2;
NEXT1;
    MOVF    TEMP2,0         ;
    SUBLW   44H            ;溫度1的判斷,對(duì)應(yīng)鍵盤上的D
    BTFSS   STATUS,Z       ;
    RETFIE                 ;也不是那就中斷返回

  CALL    WDZH1          ;
    RETFIE                 ;轉(zhuǎn)換完成就返回中斷
CALL1  
   CLRF     COUNT1;
   CALL     TABLE
   GOTO     EXIT;
CALL2
   MOVLW    D'26';
   MOVWF    COUNT1;
   CALL     TABLE;
EXIT
   CLRF     READCUNT;
   CLRF     FEIFA;
   RETFIE;
FEEDBACK
   MOVF    RCREG,0;
   BTFSS   PIR1,TXIF;
   GOTO    $-1;
   MOVWF   TXREG;
   RETFIE;;;
   MOVF    READCUNT,0;
   CALL    READ2;
   INCF    READCUNT,1;
   SUBWF   RCREG,0;
   BTFSC   STATUS,Z;

  RETFIE;
   BSF     FEIFA,0;
   RETFIE;

;
TABLE
LOOP
    MOVF   COUNT1,0
    CALL   READ1;
    MOVWF  TEMP;
GETDATA  
    BTFSS  PIR1,TXIF;
    GOTO   GETDATA;
    MOVWF  TXREG;
    INCF   COUNT1,1;
    MOVF   TEMP,0;
    BTFSS  STATUS,Z;
    GOTO   LOOP;
    RETURN;

READ1
   ADDWF   PCL,1;
   RETLW   A'\N';
   RETLW   A'\R';
   RETLW   A'M';

 RETLW   A'Y';
   RETLW   A' ';
   RETLW   A'N';
   RETLW   A'A';
   RETLW   A'M';
   RETLW   A'E';
   RETLW   A' ';
   RETLW   A'I';
   RETLW   A'S';
   RETLW   A' ';
   RETLW   A'P';
   RETLW   A'I';
   RETLW   A'C';
   RETLW   A'1';
   RETLW   A'6';
   RETLW   A'F';
   RETLW   A'8';
   RETLW   A'7';
   RETLW   A'7';

 RETLW   A'.';      
   RETLW   A'\N';
   RETLW   A'\R';
   RETLW   0
READ
   RETLW   A'N';
   RETLW   A'R';
   RETLW   A'E';
   RETLW   A'R';
   RETLW   A'R';
   RETLW   A'O';
   RETLW   A'R';
   RETLW   A'!';
   RETLW   A'\N';
   RETLW   A'\R';
   RETLW   0

READ2
   ADDWF   PCL,1;
   RETLW   A'W';
   RETLW   A'H';
   RETLW   A'A';
   RETLW   A'T';

RETLW   A' ';
   RETLW   A'I';
   RETLW   A'S';
   RETLW   A' ';
   RETLW   A'Y'
   RETLW   A'O';
   RETLW   A'U';
   RETLW   A'R';
   RETLW   A' ';
   RETLW   A'N';
   RETLW   A'A';
   RETLW   A'M';
   RETLW   A'E';
   RETLW   A'?';

STATUP                   ;這邊是程序的初始化
   BANK1                 ;選體1
   BSF    TRISC,6        ;
   BSF    TRISC,7        ;
   BCF    TRISC,0        ;
   MOVLW  D'12'          ;

MOVWF  SPBRG          ;
   MOVLW  B'00100100'    ;24H
   MOVWF  TXSTA          ;
   BSF    PIE1,RCIE      ;
   MOVLW  0FFH           ;
   MOVWF  TRISA          ;設(shè)置RA口為輸入
   MOVLW  B'10000010'    ;設(shè)置為AD0進(jìn)入轉(zhuǎn)換,基準(zhǔn)電壓為VDDANDVSS,右對(duì)齊方式,結(jié)果是ADRESH 高.ADRESL 低,
   MOVWF  ADCON1         ;RA0,1,2,3,4,是AD口,RE2,1,0是數(shù)字口
   BANK0                 ;恢復(fù)體0
   MOVLW   35H           ;
   MOVWF   T1CON         ;
   MOVLW   B'10010000'   ;
   MOVWF   RCSTA         ;
   BSF     INTCON,GIE    ;
   BSF     INTCON,PEIE   ;
   CLRF    READCUNT      ;
   CLRF    FEIFA         ;
MAIN
;
;   call    dyzh
;   goto    $
   CLRWDT                ;
   BTFSS   PIR1,TMR1IF   ;
   GOTO    MAIN          ;
   BCF     PIR1,TMR1IF   ;

MOVLW   B'00000001'   ;
   XORWF   PORTC,1       ;
   GOTO    MAIN          ;
;*******************************************************************
;這個(gè)是電壓轉(zhuǎn)換
DYZH;電壓轉(zhuǎn)換程序
   MOVLW  B'01000001'    ;SELECT AD0,OPEN AD;
   MOVWF  ADCON0         ;
   BSF    ADCON0,GO      ;GO Bit是自動(dòng)清零
   BTFSS  PIR1,ADIF      ;
   GOTO   $-1            ;
   MOVF   ADRESH,0       ;
   MOVWF  SOUH           ;
   BANK1                 ;
   MOVF   ADRESL,0       ;
   MOVWF  SOU            ;
   BANK0                 ;
;   MOVLW  32H;

;   MOVWF  SOU;
;   MOVLW  48H;
;   MOVWF  SOUH;
   CALL   DBTBCD         ;已經(jīng)是轉(zhuǎn)換完成
   CALL   BCDTX          ;CALL BCD碼發(fā)送
   RETURN                ;
  
      

WDZH1;溫度1的轉(zhuǎn)換
   MOVLW  B'01001001' ;
   MOVWF  ADCON0      ;
   BSF    ADCON0,GO   ;
   BTFSS  PIR1,ADIF   ;
   GOTO   $-1         ;
   CALL   DBTBCD      ;
   CALL   BCDTX       ;
   RETURN;
;


;********************DBTBCD********************
;本程序?qū)崿F(xiàn)雙字節(jié)二進(jìn)制數(shù)轉(zhuǎn)化為3字節(jié)壓縮BCD碼。
;入口參數(shù):原二進(jìn)制數(shù)在SOUH:SOU中。
;出口參數(shù):結(jié)果在RLT:SOUH:SOU中。
;占用資源:W,STATUS,FSR,023H,024H,025H,026H,028H,029,02AH,兩重堆棧。

DBTBCD      MOVF        SOU,W
            MOVWF       TEMP2
            MOVF        SOUH,W
            MOVWF       TEMP3
            CLRF        SOU
            CLRF        SOUH
            CLRF        RLT
            BCF         STATUS,C
            MOVLW       .16
            MOVWF       CNT
LOOPC1      RLF         TEMP2,F
            RLF         TEMP3,F
            RLF         SOU,F
            RLF         SOUH,F
            RLF         RLT,F
            DECFSZ      CNT,F
            GOTO        ADJDEC1        
            RETURN           ;整個(gè)子程序結(jié)束

ADJDEC1     MOVLW       SOU
            MOVWF       FSR
            CALL        ADJBCD1     ;調(diào)整RLT
            MOVLW       SOUH
            MOVWF       FSR
            CALL        ADJBCD1     ;調(diào)整RLTH
            MOVLW       RLT
            MOVWF       FSR
            CALL        ADJBCD1     ;調(diào)整TEMP1
            GOTO        LOOPC1
;********************調(diào)整BCD********************
ADJBCD1     MOVLW       03H
            ADDWF       INDF,W      ;低四位加3
            MOVWF       TEMP1       ;暫存
            BTFSC       TEMP1,3     ;結(jié)果大于7,
            MOVWF       INDF        ;則存起來
            MOVLW       30H
            ADDWF       INDF,W      ;高四位加3
            MOVWF       TEMP1              
            BTFSC       TEMP1,7     ;結(jié)果大于7,
            MOVWF       INDF        ;則存起來

    RETURN
;**********************************
;結(jié)果的順序是RLT SOUH SOU
BCDTX;
   SWAPF   RLT,0;
   ANDLW   0FH;
   BTFSS   PIR1,TXIF;
   GOTO    $-1;
   CALL    READASC;
   MOVWF   TXREG;
   MOVF    RLT,0;
   ANDLW   0FH;
   BTFSS   PIR1,TXIF;
   GOTO    $-1;
   CALL    READASC;
   MOVWF   TXREG              ;這個(gè)是發(fā)送完RLT字節(jié)
   SWAPF   SOUH,0;
   ANDLW   0FH;
   BTFSS   PIR1,TXIF;
   GOTO    $-1;
   CALL    READASC;
   MOVWF   TXREG;
   MOVF    SOUH,0;

ANDLW   0FH;
   BTFSS   PIR1,TXIF;
   GOTO    $-1;
   CALL    READASC;
   MOVWF   TXREG              ;這個(gè)是發(fā)送完SOUH字節(jié)
   SWAPF   SOU,0;
   ANDLW   0FH;
   BTFSS   PIR1,TXIF;
   GOTO    $-1;
   CALL    READASC;
   MOVWF   TXREG;
   MOVF    SOU,0;
   ANDLW   0FH;
   BTFSS   PIR1,TXIF;
   GOTO    $-1;
   CALL    READASC;
   MOVWF   TXREG                 ;這個(gè)是發(fā)送完SOU字節(jié)
   BTFSS   PIR1,TXIF             ;

GOTO    $-1                   ;
;   MOVLW   A'\N';
;   MOVWF   TXREG;
;   BTFSS   PIR1,TXIF;
;   GOTO    $-1;
;   MOVLW   A'\R';
;   MOVWF   TXREG;
;   MOVLW    00H                  ;這個(gè)是用來?yè)Q行的00H
;  CALL     READ3                ;
;   MOVWF    TXREG                ;
;   BTFSS    PIR1,TXIF            ;
;   GOTO     $-1                  ;
;   MOVLW    01H                  ;01H
;   CALL     READ3                ;
;  MOVWF    TXREG                ;
   RETURN                        ;返回

READASC
    ADDWF   PCL,1;
    RETLW   A'0';
    RETLW   A'1';
    RETLW   A'2';
    RETLW   A'3';
    RETLW   A'4';

RETLW   A'5';
    RETLW   A'6';
    RETLW   A'7';
    RETLW   A'8';
    RETLW   A'9';
READ3                             ;
    ADDWF    PCL,1                ;
    RETLW    A'\n'                ;
    RETLW    A'\r'                ;

   END;

實(shí)驗(yàn)時(shí),串口配置波特率要選擇19200,數(shù)據(jù)位是8位,校驗(yàn)位是N,停止位是1.就可以,調(diào)節(jié)ICD1板上的電壓就可以在程序中顯示出來,分辨率是10位.

四子王旗| 秀山| 阿鲁科尔沁旗| 开原市| 吉隆县| 茶陵县| 湛江市| 吉木萨尔县| 万全县| 永康市| 临汾市| 林西县| 桂东县| 瑞安市| 淮阳县| 保德县| 赞皇县| 东光县| 西青区| 荃湾区| 安平县| 尼勒克县| 开原市| 郎溪县| 安达市| 临湘市| 湟中县| 大安市| 合作市| 广昌县| 巴南区| 正镶白旗| 信阳市| 三都| 广宗县| 攀枝花市| 汕尾市| 双桥区| 平乡县| 东乌珠穆沁旗| 通化市|