標(biāo)題:
SHTM11溫度傳感測試程序
[打印本頁]
作者:
xuwei
時間:
2015-6-13 01:46
標(biāo)題:
SHTM11溫度傳感測試程序
;*************************************************************************************
; File name: "temp_op_asm.s"
; Date: 2013年12月
; Author: 小ARM菜菜
; Q Q: 925295580
; Description: this is a test temperature
;************************************************************************************
;
;指令集采用標(biāo)準(zhǔn)指令集
;
;
;----- *8 bit CPU Register Definitions -----------------------------------------------------
ANSELA EQU H'0F38'
ANSELB EQU H'0F39'
ANSELC EQU H'0F3A'
PMD2 EQU H'0F3D'
PMD1 EQU H'0F3E'
PMD0 EQU H'0F3F'
DACCON1 EQU H'0F40'
VREFCON2 EQU H'0F40'
DACCON0 EQU H'0F41'
VREFCON1 EQU H'0F41'
FVRCON EQU H'0F42'
VREFCON0 EQU H'0F42'
CTMUICON EQU H'0F43'
CTMUICONH EQU H'0F43'
CTMUCON1 EQU H'0F44'
CTMUCONL EQU H'0F44'
CTMUCON0 EQU H'0F45'
CTMUCONH EQU H'0F45'
SRCON1 EQU H'0F46'
SRCON0 EQU H'0F47'
CCPTMRS1 EQU H'0F48'
CCPTMRS0 EQU H'0F49'
T6CON EQU H'0F4A'
PR6 EQU H'0F4B'
TMR6 EQU H'0F4C'
T5GCON EQU H'0F4D'
T5CON EQU H'0F4E'
TMR5 EQU H'0F4F'
TMR5L EQU H'0F4F'
TMR5H EQU H'0F50'
T4CON EQU H'0F51'
PR4 EQU H'0F52'
TMR4 EQU H'0F53'
CCP5CON EQU H'0F54'
CCPR5 EQU H'0F55'
CCPR5L EQU H'0F55'
CCPR5H EQU H'0F56'
CCP4CON EQU H'0F57'
CCPR4 EQU H'0F58'
CCPR4L EQU H'0F58'
CCPR4H EQU H'0F59'
PSTR3CON EQU H'0F5A'
CCP3AS EQU H'0F5B'
ECCP3AS EQU H'0F5B'
PWM3CON EQU H'0F5C'
CCP3CON EQU H'0F5D'
CCPR3 EQU H'0F5E'
CCPR3L EQU H'0F5E'
CCPR3H EQU H'0F5F'
SLRCON EQU H'0F60'
WPUB EQU H'0F61'
IOCB EQU H'0F62'
PSTR2CON EQU H'0F63'
CCP2AS EQU H'0F64'
ECCP2AS EQU H'0F64'
PWM2CON EQU H'0F65'
CCP2CON EQU H'0F66'
CCPR2 EQU H'0F67'
CCPR2L EQU H'0F67'
CCPR2H EQU H'0F68'
SSP2CON3 EQU H'0F69'
SSP2MSK EQU H'0F6A'
SSP2CON2 EQU H'0F6B'
SSP2CON1 EQU H'0F6C'
SSP2STAT EQU H'0F6D'
SSP2ADD EQU H'0F6E'
SSP2BUF EQU H'0F6F'
BAUD2CON EQU H'0F70'
BAUDCON2 EQU H'0F70'
RC2STA EQU H'0F71'
RCSTA2 EQU H'0F71'
TX2STA EQU H'0F72'
TXSTA2 EQU H'0F72'
TX2REG EQU H'0F73'
TXREG2 EQU H'0F73'
RC2REG EQU H'0F74'
RCREG2 EQU H'0F74'
SP2BRG EQU H'0F75'
SPBRG2 EQU H'0F75'
SP2BRGH EQU H'0F76'
SPBRGH2 EQU H'0F76'
CM12CON EQU H'0F77'
CM2CON1 EQU H'0F77'
CM2CON EQU H'0F78'
CM2CON0 EQU H'0F78'
CM1CON EQU H'0F79'
CM1CON0 EQU H'0F79'
PIE4 EQU H'0F7A'
PIR4 EQU H'0F7B'
IPR4 EQU H'0F7C'
PIE5 EQU H'0F7D'
PIR5 EQU H'0F7E'
IPR5 EQU H'0F7F'
PORTA EQU H'0F80'
PORTB EQU H'0F81'
PORTC EQU H'0F82'
PORTE EQU H'0F84'
LATA EQU H'0F89'
LATB EQU H'0F8A'
LATC EQU H'0F8B'
DDRA EQU H'0F92'
TRISA EQU H'0F92'
DDRB EQU H'0F93'
TRISB EQU H'0F93'
DDRC EQU H'0F94'
TRISC EQU H'0F94'
TRISE EQU H'0F96'
OSCTUNE EQU H'0F9B'
HLVDCON EQU H'0F9C'
LVDCON EQU H'0F9C'
PIE1 EQU H'0F9D'
PIR1 EQU H'0F9E'
IPR1 EQU H'0F9F'
PIE2 EQU H'0FA0'
PIR2 EQU H'0FA1'
IPR2 EQU H'0FA2'
PIE3 EQU H'0FA3'
PIR3 EQU H'0FA4'
IPR3 EQU H'0FA5'
EECON1 EQU H'0FA6'
EECON2 EQU H'0FA7'
EEDATA EQU H'0FA8'
EEADR EQU H'0FA9'
RC1STA EQU H'0FAB'
RCSTA EQU H'0FAB'
RCSTA1 EQU H'0FAB'
TX1STA EQU H'0FAC'
TXSTA EQU H'0FAC'
TXSTA1 EQU H'0FAC'
TX1REG EQU H'0FAD'
TXREG EQU H'0FAD'
TXREG1 EQU H'0FAD'
RC1REG EQU H'0FAE'
RCREG EQU H'0FAE'
RCREG1 EQU H'0FAE'
SP1BRG EQU H'0FAF'
SPBRG EQU H'0FAF'
SPBRG1 EQU H'0FAF'
SP1BRGH EQU H'0FB0'
SPBRGH EQU H'0FB0'
SPBRGH1 EQU H'0FB0'
T3CON EQU H'0FB1'
TMR3 EQU H'0FB2'
TMR3L EQU H'0FB2'
TMR3H EQU H'0FB3'
T3GCON EQU H'0FB4'
ECCP1AS EQU H'0FB6'
ECCPAS EQU H'0FB6'
PWM1CON EQU H'0FB7'
PWMCON EQU H'0FB7'
BAUD1CON EQU H'0FB8'
BAUDCON EQU H'0FB8'
BAUDCON1 EQU H'0FB8'
BAUDCTL EQU H'0FB8'
PSTR1CON EQU H'0FB9'
PSTRCON EQU H'0FB9'
T2CON EQU H'0FBA'
PR2 EQU H'0FBB'
TMR2 EQU H'0FBC'
CCP1CON EQU H'0FBD'
CCPR1 EQU H'0FBE'
CCPR1L EQU H'0FBE'
CCPR1H EQU H'0FBF'
ADCON2 EQU H'0FC0'
ADCON1 EQU H'0FC1'
ADCON0 EQU H'0FC2'
ADRES EQU H'0FC3'
ADRESL EQU H'0FC3'
ADRESH EQU H'0FC4'
SSP1CON2 EQU H'0FC5'
SSPCON2 EQU H'0FC5'
SSP1CON1 EQU H'0FC6'
SSPCON1 EQU H'0FC6'
SSP1STAT EQU H'0FC7'
SSPSTAT EQU H'0FC7'
SSP1ADD EQU H'0FC8'
SSPADD EQU H'0FC8'
SSP1BUF EQU H'0FC9'
SSPBUF EQU H'0FC9'
SSP1MSK EQU H'0FCA'
SSPMSK EQU H'0FCA'
SSP1CON3 EQU H'0FCB'
SSPCON3 EQU H'0FCB'
T1GCON EQU H'0FCC'
T1CON EQU H'0FCD'
TMR1 EQU H'0FCE'
TMR1L EQU H'0FCE'
TMR1H EQU H'0FCF'
RCON EQU H'0FD0'
WDTCON EQU H'0FD1'
OSCCON2 EQU H'0FD2'
OSCCON EQU H'0FD3'
T0CON EQU H'0FD5'
TMR0 EQU H'0FD6'
TMR0L EQU H'0FD6'
TMR0H EQU H'0FD7'
STATUS EQU H'0FD8'
FSR2L EQU H'0FD9'
FSR2H EQU H'0FDA'
PLUSW2 EQU H'0FDB'
PREINC2 EQU H'0FDC'
POSTDEC2 EQU H'0FDD'
POSTINC2 EQU H'0FDE'
INDF2 EQU H'0FDF'
BSR EQU H'0FE0'
FSR1L EQU H'0FE1'
FSR1H EQU H'0FE2'
PLUSW1 EQU H'0FE3'
PREINC1 EQU H'0FE4'
POSTDEC1 EQU H'0FE5'
POSTINC1 EQU H'0FE6'
INDF1 EQU H'0FE7'
WREG EQU H'0FE8'
FSR0L EQU H'0FE9'
FSR0H EQU H'0FEA'
PLUSW0 EQU H'0FEB'
PREINC0 EQU H'0FEC'
POSTDEC0 EQU H'0FED'
POSTINC0 EQU H'0FEE'
INDF0 EQU H'0FEF'
INTCON3 EQU H'0FF0'
INTCON2 EQU H'0FF1'
INTCON EQU H'0FF2'
PROD EQU H'0FF3'
PRODL EQU H'0FF3'
PRODH EQU H'0FF4'
TABLAT EQU H'0FF5'
TBLPTR EQU H'0FF6'
TBLPTRL EQU H'0FF6'
TBLPTRH EQU H'0FF7'
TBLPTRU EQU H'0FF8'
PC EQU H'0FF9'
PCL EQU H'0FF9'
PCLATH EQU H'0FFA'
PCLATU EQU H'0FFB'
STKPTR EQU H'0FFC'
TOS EQU H'0FFD'
TOSL EQU H'0FFD'
TOSH EQU H'0FFE'
TOSU EQU H'0FFF'
;內(nèi)存塊分配
;bank1 ram
TICK EQU H'20'
TICK1 EQU H'21'
DATA_LINE_ACK_STATUS EQU H'10' ;save the line ststus 0x00/0x01 回應(yīng)信號
SHTM11_READ_BYTE_COUNT EQU H'11' ;讀取SHTM11字節(jié)數(shù)計數(shù)
SHTM11_READ_BIT_COUNT EQU H'12' ;讀取SHTM11 bit計數(shù)
SHTM11_READ_BYTE0 EQU H'0' ;讀取數(shù)據(jù)的第0字節(jié)
SHTM11_READ_BYTE1 EQU H'14' ;讀取數(shù)據(jù)的第1字節(jié)
SHTM11_READ_BYTE2 EQU H'15' ;讀取數(shù)據(jù)的第2字節(jié)
SHTM11_READ_BYTE3 EQU H'16' ;讀取數(shù)據(jù)的第3字節(jié)
SHTM11_READ_BYTE4 EQU H'17' ;讀取數(shù)據(jù)的第4字節(jié)
;start rom addr is 0x0000H
ORG 000H
GOTO _MAIN
; main function
ORG 20H
_MAIN:
CALL INIT_PORTA_REG; call init porta
NOP
MAINLOOP:;start of main
; do someting by itself
CALL DELAY_680MS ;
CALL DELAY_680MS ;
CALL READ ;read some data ....
GOTO MAINLOOP;end of main
;///////////////////////////////////////////////////////////////////////////////////////
;//////////////////////////////////////////////////////////////////////////////////////
;function
READ:
CALL CONF_DATA_LINE_OUTPUT
CALL CONF_DATA_LINE_HIGHT
NOP
CALL CONF_DATA_LINE_LOW
CALL DELAY_30MS
CALL CONF_DATA_LINE_HIGHT
CALL CONF_DATA_LINE_INPUT;
CALL DELAY_50US
BTFSC PORTC,2,0
GOTO ENDOFREAD
GOTO ACK_SUCCESSFULAY
ACK_SUCCESSFULAY:
S0: BTFSC PORTC,2,0
GOTO NEXT_0
GOTO S0
NEXT_0:
S1: BTFSS PORTC,2,0
GOTO NEXT_1
GOTO S1
NEXT_1: CALL READ_BYTE
CALL READ_BYTE
CALL READ_BYTE
CALL READ_BYTE
CALL READ_BYTE
ENDOFREAD: RETURN
READ_BYTE:
MOVLB 0x1
NOP
MOVLW 0x8
MOVWF SHTM11_READ_BIT_COUNT;
MOVLB 0x0
MOVLW 0x0
MOVWF SHTM11_READ_BYTE0;
;loop body
BIT:
S2: BTFSC PORTC,2,0
GOTO NEXT_2
GOTO S2
NEXT_2: CALL DELAY_50US
MOVLB 0xF ;SFR
BTFSS PORTC,2,0
GOTO DATA_IS_0
GOTO DATA_IS_1
DATA_IS_0:
MOVLB 0x0 ;bank1
MOVLW 0x00
RLNCF SHTM11_READ_BYTE0 ,1,1;
MOVF SHTM11_READ_BYTE0,0;
ANDLW 0xFE;
MOVWF SHTM11_READ_BYTE0
GOTO OVER_BIT
DATA_IS_1:
MOVLB 0x0 ;bank1
MOVLW 0x00
RLNCF SHTM11_READ_BYTE0 ,1,1;
MOVF SHTM11_READ_BYTE0,0;
IORLW 0x01;
MOVWF SHTM11_READ_BYTE0;
;
MOVLB 0xF ;SFR
WAIT_1_OVER: BTFSS PORTC,2,0
GOTO OVER_BIT
GOTO WAIT_1_OVER
; loop body
OVER_BIT: DECFSZ SHTM11_READ_BIT_COUNT,1
GOTO BIT
; end of loop
RETURN
;**********************Pulled(x)******************************************************
CONF_DATA_LINE_HIGHT:
MOVLB 0xF
BSF PORTC , 2
RETURN
;**********************Low(x)********************************************************
CONF_DATA_LINE_LOW:
MOVLB 0xF
BCF PORTC , 2
RETURN
;**********************Output(x)******************************************************
CONF_DATA_LINE_OUTPUT:
MOVLB 0xF
BCF TRISC , 2
RETURN
;**********************Input(x)*******************************************************
CONF_DATA_LINE_INPUT:
MOVLB 0xF
BSF TRISC , 2
RETURN
;*********************Iintportx*******************************************************
INIT_PORTA_REG:
; init portx as output of all
MOVLB 0xF
MOVLW 0x00
MOVWF TRISC
MOVLW 0xFF
MOVWF ANSELC
MOVLW 0x00
MOVWF SLRCON
MOVLW 0xFF
MOVWF PORTC
RETURN
;*********************DELAY_30MS*******************************************************************
DELAY_30MS:
MOVLB 0x1 ;使用bank1ram中的TICK 1t
MOVLW 0x10
MOVWF TICK1
D1: MOVLW 0xff
MOVWF TICK
D0: CALL DELAY_10US
DECFSZ TICK,1
GOTO D0
DECFSZ TICK1,1
GOTO D1
RETURN
;*********************DELAY_70uS*******************************************************************
DELAY_70US:
MOVLB 0x1
MOVLW 7
MOVWF TICK
D2:CALL DELAY_10US
DECFSZ TICK,1
GOTO D2
RETURN
;*********************DELAY_85uS*******************************************************************
DELAY_85US:
MOVLB 0x1 ;使用bank1ram中的TICK 1t
MOVLW 9
MOVWF TICK
D3:CALL DELAY_10US
DECFSZ TICK,1
GOTO D3
RETURN
;*********************DELAY_85uS*******************************************************************
DELAY_50US:
MOVLB 0x1 ;使用bank1ram中的TICK 1t
MOVLW 5
MOVWF TICK
D6: CALL DELAY_10US
DECFSZ TICK,1
GOTO D6
RETURN
;*********************DELAY_680MS*******************************************************************
DELAY_680MS:
MOVLB 0x1 ;使用bank1ram中的TICK
MOVLW 0xFF
MOVWF TICK1
D5: MOVLW 0xff
MOVWF TICK
D4: CALL DELAY_10US
DECFSZ TICK,1
GOTO D4
DECFSZ TICK1,1
GOTO D5
RETURN
;*********************DELAY_10US*******************************************************************
DELAY_10US:
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
RETURN
;*******************************************************************************************
END
復(fù)制代碼
作者:
南天白云
時間:
2015-6-15 10:31
搶沙發(fā)了,樓主程序為什么是匯編的,不知哦,還是要謝謝你的
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1