📄 adconvert.asm
字号:
CALL SIMPLE ;Wait min sample time
BSF ADCON0,GO ;Start conversion
BCF STATUS,RP1 ;
BTFSC ADCON0,GO ;Is conversion done?
GOTO $-1 ;No, test again
MOVF ADRESH,W ;Read upper 2 bits
MOVWF 38H ;
BSF STATUS,RP0 ;Bank 1
MOVF ADRESL,W ;Read lower 8 bits
BCF STATUS,RP0 ;Bank 0
MOVWF 39H
;__________________________________________________________
;6
BSF STATUS,RP0 ;Bank 1
BCF STATUS,RP1 ;
MOVLW 70h ;A/D RC clock
MOVWF ADCON1 ;
BSF TRISC,7 ;Set RC7 to input
BCF STATUS,RP0 ;Bank 2
BSF STATUS,RP1 ;
BSF ANSELH,9 ;Set RC7 to analog
BCF STATUS,RP1 ;Bank 0
MOVLW b'11011001' ;Right, Vdd Vref, AN6
MOVWF ADCON0
CALL SIMPLE ;Wait min sample time
BSF ADCON0,GO ;Start conversion
BCF STATUS,RP1 ;
BTFSC ADCON0,GO ;Is conversion done?
GOTO $-1 ;No, test again
MOVF ADRESH,W ;Read upper 2 bits
MOVWF 3aH ;
BSF STATUS,RP0 ;Bank 1
MOVF ADRESL,W ;Read lower 8 bits
BCF STATUS,RP0 ;Bank 0
MOVWF 3bH
;_________________________________________________________
;7
BSF STATUS,RP0 ;Bank 1
BCF STATUS,RP1 ;
MOVLW 70h ;A/D RC clock
MOVWF ADCON1 ;
BSF TRISC,6 ;Set RC6 to input
BCF STATUS,RP0 ;Bank 2
BSF STATUS,RP1 ;
BSF ANSELH,8 ;Set RC6 to analognop
BCF STATUS,RP1 ;Bank 0
MOVLW b'11011001' ;Right, Vdd Vref, AN6
MOVWF ADCON0
CALL SIMPLE ;Wait min sample time
BSF ADCON0,GO ;Start conversion
BCF STATUS,RP1 ;
BTFSC ADCON0,GO ;Is conversion done?
GOTO $-1 ;No, test again
MOVF ADRESH,W ;Read upper 2 bits
MOVWF 3cH ;
BSF STATUS,RP0 ;Bank 1
MOVF ADRESL,W ;Read lower 8 bits
BCF STATUS,RP0 ;Bank 0
MOVWF 3dH
;————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
; AD转换结束 结果*5 转10进制 转ASCII
;————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
BCF STATUS,RP0 ;选择BANK0
BCF STATUS,RP1
MOVLW 0FFH ;赋值试验
MOVWF 30h
MOVWF 31H
MOVF 30H,0 ;把30H寄存器中 A|D转换结果高位内容传送给W
MOVWF 40H ;高位字节传送给40H
MOVWF 41H ;高位字节传送给41H (存结果)
MOVF 31H,0 ;把31H寄存器中 A|D转换结果低位内容传送给W
MOVWF 42H ;低位字节传送给42H
MOVWF 43H ;低位字节传送给43H (存结果)
call x5
;............................................................
MOVF 41H,0
movwf ACCBHI
MOVF 43H,0
movwf ACCBLO
call B2_BCD
;............................................................
call ASCII
MOVF 44H,0 ;ASCII码
MOVWF 60H ;
MOVF 45H,0 ;
MOVWF 61H
MOVF 46H,0
MOVWF 62H
;_______________________________________________________________________________________________
;2
BCF STATUS,RP0 ;选择BANK0
BCF STATUS,RP1
MOVF 32H,0 ;把32H寄存器中 A|D转换结果高位内容传送给W
MOVWF 40H ;高位字节传送给40H
MOVWF 41H ;高位字节传送给41H (存结果)
MOVF 33H,0 ;把33H寄存器中 A|D转换结果低位内容传送给W
MOVWF 42H ;低位字节传送给42H
MOVWF 43H ;低位字节传送给43H (存结果)
call x5
;............................................................
MOVF 41H,0
movwf ACCBHI
MOVF 43H,0
movwf ACCBLO
call B2_BCD
;............................................................
call ASCII
MOVF 44H,0
MOVWF 63H
MOVF 45H,0
MOVWF 64H
MOVF 46H,0
MOVWF 65H
;___________________________________________________________________________________________________
;3
BCF STATUS,RP0 ;选择BANK0
BCF STATUS,RP1
MOVF 34H,0 ;把34H寄存器中 A|D转换结果高位内容传送给W
MOVWF 40H ;高位字节传送给40H
MOVWF 41H ;高位字节传送给41H (存结果)
MOVF 35H,0 ;把35H寄存器中 A|D转换结果低位内容传送给W
MOVWF 42H ;低位字节传送给42H
MOVWF 43H ;低位字节传送给43H (存结果)
call x5
;............................................................
MOVF 41H,0
movwf ACCBHI
MOVF 43H,0
movwf ACCBLO
call B2_BCD
;............................................................
call ASCII
MOVF 44H,0
MOVWF 66H
MOVF 45H,0
MOVWF 67H
MOVF 46H,0
MOVWF 68H
;_____________________________________________________________________________________________________
;4
BCF STATUS,RP0 ;选择BANK0
BCF STATUS,RP1
MOVF 36H,0 ;把36H寄存器中 A|D转换结果高位内容传送给W
MOVWF 40H ;高位字节传送给40H
MOVWF 41H ;高位字节传送给41H (存结果)
MOVF 37H,0 ;把37H寄存器中 A|D转换结果低位内容传送给W
MOVWF 42H ;低位字节传送给42H
MOVWF 43H ;低位字节传送给43H (存结果)
call x5
;............................................................
MOVF 41H,0
movwf ACCBHI
MOVF 43H,0
movwf ACCBLO
call B2_BCD
;............................................................
call ASCII
MOVF 44H,0
MOVWF 69H
MOVF 45H,0
MOVWF 6aH
MOVF 46H,0
MOVWF 6bH
;_____________________________________________________________________________________________
;5
BCF STATUS,RP0 ;选择BANK0
BCF STATUS,RP1
MOVF 38H,0 ;把38H寄存器中 A|D转换结果高位内容传送给W
MOVWF 40H ;高位字节传送给40H
MOVWF 41H ;高位字节传送给41H (存结果)
MOVF 39H,0 ;把39H寄存器中 A|D转换结果低位内容传送给W
MOVWF 42H ;低位字节传送给42H
MOVWF 43H ;低位字节传送给43H (存结果)
call x5
;............................................................
MOVF 41H,0
movwf ACCBHI
MOVF 43H,0
movwf ACCBLO
call B2_BCD
;............................................................
call ASCII
MOVF 44H,0
MOVWF 6cH
MOVF 45H,0
MOVWF 6dH
MOVF 46H,0
MOVWF 6eH
;____________________________________________________________________________________________________
;6
BCF STATUS,RP0 ;选择BANK0
BCF STATUS,RP1
MOVF 3aH,0 ;把3aH寄存器中 A|D转换结果高位内容传送给W
MOVWF 40H ;高位字节传送给40H
MOVWF 41H ;高位字节传送给41H (存结果)
MOVF 3bH,0 ;把3bH寄存器中 A|D转换结果低位内容传送给W
MOVWF 42H ;低位字节传送给42H
MOVWF 43H ;低位字节传送给43H (存结果)
call x5
;............................................................
MOVF 41H,0
movwf ACCBHI
MOVF 43H,0
movwf ACCBLO
call B2_BCD
;............................................................
call ASCII
MOVF 44H,0
MOVWF 70H
MOVF 45H,0
MOVWF 71H
MOVF 46H,0
MOVWF 72H
;____________________________________________________________________________________________________
;7
BCF STATUS,RP0 ;选择BANK0
BCF STATUS,RP1
MOVLW 0FFH ;赋值实验
MOVWF 3CH
MOVWF 3DH
MOVF 3cH,0 ;把3cH寄存器中 A|D转换结果高位内容传送给W
MOVWF 40H ;高位字节传送给40H
MOVWF 41H ;高位字节传送给41H (存结果)
MOVF 3dH,0 ;把3dH寄存器中 A|D转换结果低位内容传送给W
MOVWF 42H ;低位字节传送给42H
MOVWF 43H ;低位字节传送给43H (存结果)
call x5
;............................................................
MOVF 41H,0
movwf ACCBHI
MOVF 43H,0
movwf ACCBLO
call B2_BCD
;............................................................
call ASCII
MOVF 44H,0
MOVWF 73H
MOVF 45H,0
MOVWF 74H
MOVF 46H,0
MOVWF 75H
;____________________________________________________________________________________________________
;AD转换结果转ASCII码结束
;____________________________________________________________________________________________________
;---------------------------------------------------------------------------------
; 占用IIC总线
;---------------------------------------------------------------------------------
;testiic BTFSC PORTB,5 ;测试RB5口是否为0,为0则IIC总线空闲
; GOTO testiic
EGRIIC BCF STATUS,RP0 ;占用IIC总线
BCF STATUS,RP0 ;选BANK0
BTFSC RB,5 ;测试RB5口是否为0,为0则IIC总线空闲
GOTO MEGRIIC ;总线忙则转到MEGRIIC
GOTO MLP ;总线不忙则转到MLP
MEGRIIC NOP ;BSF RE,0 ;声音打开
NOP ;等IIC变为空闲
NOP
GOTO EGRIIC
MLP BSF STATUS,RP0 ;选BANK1
;MOVLW 0XE0 ;rb4 为O
;MOVWF TRISB
BCF TRISB,5 ;置0为输出
BCF STATUS,RP0 ;选BANK0
;BSF RE,0 ;消除声音
BSF RB,5 ;IIC占用为1
BSF ICSTA,0 ;SET 标志
RETURN-
;--------------------------------------------------------------
;***************把ASCII 写入 24LC64****************************
TEST64
CLRF DATAI
;CALL RBINIT
CALL IICINIT
MOVLW 0X01 ;0100单元
MOVWF ADDH
MOVLW 0X00
MOVWF ADDL
MOVF 60H,0
MOVWF DATA0 ;把60H中ASCII码结果存入DATA0
CALL YYYY ;WR 24LC64
INCF ADDL,1 ;0101单元
MOVF 61H ;
MOVWF DATA0
CALL YYYY ;WR 24LC64
INCF ADDL,1 ;0102单元
MOVF 62H ;
MOVWF DATA0
CALL YYYY ;WR 24LC64
INCF ADDL,1 ;0103单元
MOVF 63H ;
MOVWF DATA0
CALL YYYY ;WR 24LC64
INCF ADDL,1 ;0104单元
MOVF 64H ;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -