- ;*************************************************************************************
- ; File name: "temp_op_asm.s"
- ; Date: 2013年12月
- ; Author: 小ARM菜菜
- ; Q Q: 925295580
- ; Description: this is a test temperature
- ;************************************************************************************
- ;
- ;指令集采用标准指令集
- ;
- ;
- ;----- *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'
- ;内存块分配
- ;bank1 ram
- TICK EQU H'20'
- TICK1 EQU H'21'
- DATA_LINE_ACK_STATUS EQU H'10' ;save the line ststus 0x00/0x01 回应信号
- SHTM11_READ_BYTE_COUNT EQU H'11' ;读取SHTM11字节数计数
- SHTM11_READ_BIT_COUNT EQU H'12' ;读取SHTM11 bit计数
- SHTM11_READ_BYTE0 EQU H'0' ;读取数据的第0字节
- SHTM11_READ_BYTE1 EQU H'14' ;读取数据的第1字节
- SHTM11_READ_BYTE2 EQU H'15' ;读取数据的第2字节
- SHTM11_READ_BYTE3 EQU H'16' ;读取数据的第3字节
- SHTM11_READ_BYTE4 EQU H'17' ;读取数据的第4字节
- ;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
复制代码
|