找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3219|回复: 2
收起左侧

SHTM11温度传感测试程序

[复制链接]
ID:82781 发表于 2015-6-13 01:46 | 显示全部楼层 |阅读模式
  1. ;*************************************************************************************
  2. ; File name: "temp_op_asm.s"
  3. ; Date:      2013年12月
  4. ; Author:   小ARM菜菜
  5. ; Q Q:       925295580
  6. ; Description: this is a test temperature
  7. ;************************************************************************************
  8. ;
  9. ;指令集采用标准指令集
  10. ;
  11. ;
  12. ;----- *8 bit CPU Register Definitions -----------------------------------------------------
  13. ANSELA           EQU  H'0F38'
  14. ANSELB           EQU  H'0F39'
  15. ANSELC           EQU  H'0F3A'
  16. PMD2             EQU  H'0F3D'
  17. PMD1             EQU  H'0F3E'
  18. PMD0             EQU  H'0F3F'
  19. DACCON1          EQU  H'0F40'
  20. VREFCON2         EQU  H'0F40'
  21. DACCON0          EQU  H'0F41'
  22. VREFCON1         EQU  H'0F41'
  23. FVRCON           EQU  H'0F42'
  24. VREFCON0         EQU  H'0F42'
  25. CTMUICON         EQU  H'0F43'
  26. CTMUICONH        EQU  H'0F43'
  27. CTMUCON1         EQU  H'0F44'
  28. CTMUCONL         EQU  H'0F44'
  29. CTMUCON0         EQU  H'0F45'
  30. CTMUCONH         EQU  H'0F45'
  31. SRCON1           EQU  H'0F46'
  32. SRCON0           EQU  H'0F47'
  33. CCPTMRS1         EQU  H'0F48'
  34. CCPTMRS0         EQU  H'0F49'
  35. T6CON            EQU  H'0F4A'
  36. PR6              EQU  H'0F4B'
  37. TMR6             EQU  H'0F4C'
  38. T5GCON           EQU  H'0F4D'
  39. T5CON            EQU  H'0F4E'
  40. TMR5             EQU  H'0F4F'
  41. TMR5L            EQU  H'0F4F'
  42. TMR5H            EQU  H'0F50'
  43. T4CON            EQU  H'0F51'
  44. PR4              EQU  H'0F52'
  45. TMR4             EQU  H'0F53'
  46. CCP5CON          EQU  H'0F54'
  47. CCPR5            EQU  H'0F55'
  48. CCPR5L           EQU  H'0F55'
  49. CCPR5H           EQU  H'0F56'
  50. CCP4CON          EQU  H'0F57'
  51. CCPR4            EQU  H'0F58'
  52. CCPR4L           EQU  H'0F58'
  53. CCPR4H           EQU  H'0F59'
  54. PSTR3CON         EQU  H'0F5A'
  55. CCP3AS           EQU  H'0F5B'
  56. ECCP3AS          EQU  H'0F5B'
  57. PWM3CON          EQU  H'0F5C'
  58. CCP3CON          EQU  H'0F5D'
  59. CCPR3            EQU  H'0F5E'
  60. CCPR3L           EQU  H'0F5E'
  61. CCPR3H           EQU  H'0F5F'
  62. SLRCON           EQU  H'0F60'
  63. WPUB             EQU  H'0F61'
  64. IOCB             EQU  H'0F62'
  65. PSTR2CON         EQU  H'0F63'
  66. CCP2AS           EQU  H'0F64'
  67. ECCP2AS          EQU  H'0F64'
  68. PWM2CON          EQU  H'0F65'
  69. CCP2CON          EQU  H'0F66'
  70. CCPR2            EQU  H'0F67'
  71. CCPR2L           EQU  H'0F67'
  72. CCPR2H           EQU  H'0F68'
  73. SSP2CON3         EQU  H'0F69'
  74. SSP2MSK          EQU  H'0F6A'
  75. SSP2CON2         EQU  H'0F6B'
  76. SSP2CON1         EQU  H'0F6C'
  77. SSP2STAT         EQU  H'0F6D'
  78. SSP2ADD          EQU  H'0F6E'
  79. SSP2BUF          EQU  H'0F6F'
  80. BAUD2CON         EQU  H'0F70'
  81. BAUDCON2         EQU  H'0F70'
  82. RC2STA           EQU  H'0F71'
  83. RCSTA2           EQU  H'0F71'
  84. TX2STA           EQU  H'0F72'
  85. TXSTA2           EQU  H'0F72'
  86. TX2REG           EQU  H'0F73'
  87. TXREG2           EQU  H'0F73'
  88. RC2REG           EQU  H'0F74'
  89. RCREG2           EQU  H'0F74'
  90. SP2BRG           EQU  H'0F75'
  91. SPBRG2           EQU  H'0F75'
  92. SP2BRGH          EQU  H'0F76'
  93. SPBRGH2          EQU  H'0F76'
  94. CM12CON          EQU  H'0F77'
  95. CM2CON1          EQU  H'0F77'
  96. CM2CON           EQU  H'0F78'
  97. CM2CON0          EQU  H'0F78'
  98. CM1CON           EQU  H'0F79'
  99. CM1CON0          EQU  H'0F79'
  100. PIE4             EQU  H'0F7A'
  101. PIR4             EQU  H'0F7B'
  102. IPR4             EQU  H'0F7C'
  103. PIE5             EQU  H'0F7D'
  104. PIR5             EQU  H'0F7E'
  105. IPR5             EQU  H'0F7F'
  106. PORTA            EQU  H'0F80'
  107. PORTB            EQU  H'0F81'
  108. PORTC            EQU  H'0F82'
  109. PORTE            EQU  H'0F84'
  110. LATA             EQU  H'0F89'
  111. LATB             EQU  H'0F8A'
  112. LATC             EQU  H'0F8B'
  113. DDRA             EQU  H'0F92'
  114. TRISA            EQU  H'0F92'
  115. DDRB             EQU  H'0F93'
  116. TRISB            EQU  H'0F93'
  117. DDRC             EQU  H'0F94'
  118. TRISC            EQU  H'0F94'
  119. TRISE            EQU  H'0F96'
  120. OSCTUNE          EQU  H'0F9B'
  121. HLVDCON          EQU  H'0F9C'
  122. LVDCON           EQU  H'0F9C'
  123. PIE1             EQU  H'0F9D'
  124. PIR1             EQU  H'0F9E'
  125. IPR1             EQU  H'0F9F'
  126. PIE2             EQU  H'0FA0'
  127. PIR2             EQU  H'0FA1'
  128. IPR2             EQU  H'0FA2'
  129. PIE3             EQU  H'0FA3'
  130. PIR3             EQU  H'0FA4'
  131. IPR3             EQU  H'0FA5'
  132. EECON1           EQU  H'0FA6'
  133. EECON2           EQU  H'0FA7'
  134. EEDATA           EQU  H'0FA8'
  135. EEADR            EQU  H'0FA9'
  136. RC1STA           EQU  H'0FAB'
  137. RCSTA            EQU  H'0FAB'
  138. RCSTA1           EQU  H'0FAB'
  139. TX1STA           EQU  H'0FAC'
  140. TXSTA            EQU  H'0FAC'
  141. TXSTA1           EQU  H'0FAC'
  142. TX1REG           EQU  H'0FAD'
  143. TXREG            EQU  H'0FAD'
  144. TXREG1           EQU  H'0FAD'
  145. RC1REG           EQU  H'0FAE'
  146. RCREG            EQU  H'0FAE'
  147. RCREG1           EQU  H'0FAE'
  148. SP1BRG           EQU  H'0FAF'
  149. SPBRG            EQU  H'0FAF'
  150. SPBRG1           EQU  H'0FAF'
  151. SP1BRGH          EQU  H'0FB0'
  152. SPBRGH           EQU  H'0FB0'
  153. SPBRGH1          EQU  H'0FB0'
  154. T3CON            EQU  H'0FB1'
  155. TMR3             EQU  H'0FB2'
  156. TMR3L            EQU  H'0FB2'
  157. TMR3H            EQU  H'0FB3'
  158. T3GCON           EQU  H'0FB4'
  159. ECCP1AS          EQU  H'0FB6'
  160. ECCPAS           EQU  H'0FB6'
  161. PWM1CON          EQU  H'0FB7'
  162. PWMCON           EQU  H'0FB7'
  163. BAUD1CON         EQU  H'0FB8'
  164. BAUDCON          EQU  H'0FB8'
  165. BAUDCON1         EQU  H'0FB8'
  166. BAUDCTL          EQU  H'0FB8'
  167. PSTR1CON         EQU  H'0FB9'
  168. PSTRCON          EQU  H'0FB9'
  169. T2CON            EQU  H'0FBA'
  170. PR2              EQU  H'0FBB'
  171. TMR2             EQU  H'0FBC'
  172. CCP1CON          EQU  H'0FBD'
  173. CCPR1            EQU  H'0FBE'
  174. CCPR1L           EQU  H'0FBE'
  175. CCPR1H           EQU  H'0FBF'
  176. ADCON2           EQU  H'0FC0'
  177. ADCON1           EQU  H'0FC1'
  178. ADCON0           EQU  H'0FC2'
  179. ADRES            EQU  H'0FC3'
  180. ADRESL           EQU  H'0FC3'
  181. ADRESH           EQU  H'0FC4'
  182. SSP1CON2         EQU  H'0FC5'
  183. SSPCON2          EQU  H'0FC5'
  184. SSP1CON1         EQU  H'0FC6'
  185. SSPCON1          EQU  H'0FC6'
  186. SSP1STAT         EQU  H'0FC7'
  187. SSPSTAT          EQU  H'0FC7'
  188. SSP1ADD          EQU  H'0FC8'
  189. SSPADD           EQU  H'0FC8'
  190. SSP1BUF          EQU  H'0FC9'
  191. SSPBUF           EQU  H'0FC9'
  192. SSP1MSK          EQU  H'0FCA'
  193. SSPMSK           EQU  H'0FCA'
  194. SSP1CON3         EQU  H'0FCB'
  195. SSPCON3          EQU  H'0FCB'
  196. T1GCON           EQU  H'0FCC'
  197. T1CON            EQU  H'0FCD'
  198. TMR1             EQU  H'0FCE'
  199. TMR1L            EQU  H'0FCE'
  200. TMR1H            EQU  H'0FCF'
  201. RCON             EQU  H'0FD0'
  202. WDTCON           EQU  H'0FD1'
  203. OSCCON2          EQU  H'0FD2'
  204. OSCCON           EQU  H'0FD3'
  205. T0CON            EQU  H'0FD5'
  206. TMR0             EQU  H'0FD6'
  207. TMR0L            EQU  H'0FD6'
  208. TMR0H            EQU  H'0FD7'
  209. STATUS           EQU  H'0FD8'
  210. FSR2L            EQU  H'0FD9'
  211. FSR2H            EQU  H'0FDA'
  212. PLUSW2           EQU  H'0FDB'
  213. PREINC2          EQU  H'0FDC'
  214. POSTDEC2         EQU  H'0FDD'
  215. POSTINC2         EQU  H'0FDE'
  216. INDF2            EQU  H'0FDF'
  217. BSR              EQU  H'0FE0'
  218. FSR1L            EQU  H'0FE1'
  219. FSR1H            EQU  H'0FE2'
  220. PLUSW1           EQU  H'0FE3'
  221. PREINC1          EQU  H'0FE4'
  222. POSTDEC1         EQU  H'0FE5'
  223. POSTINC1         EQU  H'0FE6'
  224. INDF1            EQU  H'0FE7'
  225. WREG             EQU  H'0FE8'
  226. FSR0L            EQU  H'0FE9'
  227. FSR0H            EQU  H'0FEA'
  228. PLUSW0           EQU  H'0FEB'
  229. PREINC0          EQU  H'0FEC'
  230. POSTDEC0         EQU  H'0FED'
  231. POSTINC0         EQU  H'0FEE'
  232. INDF0            EQU  H'0FEF'
  233. INTCON3          EQU  H'0FF0'
  234. INTCON2          EQU  H'0FF1'
  235. INTCON           EQU  H'0FF2'
  236. PROD             EQU  H'0FF3'
  237. PRODL            EQU  H'0FF3'
  238. PRODH            EQU  H'0FF4'
  239. TABLAT           EQU  H'0FF5'
  240. TBLPTR           EQU  H'0FF6'
  241. TBLPTRL          EQU  H'0FF6'
  242. TBLPTRH          EQU  H'0FF7'
  243. TBLPTRU          EQU  H'0FF8'
  244. PC               EQU  H'0FF9'
  245. PCL              EQU  H'0FF9'
  246. PCLATH           EQU  H'0FFA'
  247. PCLATU           EQU  H'0FFB'
  248. STKPTR           EQU  H'0FFC'
  249. TOS              EQU  H'0FFD'
  250. TOSL             EQU  H'0FFD'
  251. TOSH             EQU  H'0FFE'
  252. TOSU             EQU  H'0FFF'

  253. ;内存块分配
  254. ;bank1 ram
  255. TICK  EQU   H'20'
  256. TICK1 EQU   H'21'
  257. DATA_LINE_ACK_STATUS   EQU  H'10' ;save the line ststus  0x00/0x01 回应信号
  258. SHTM11_READ_BYTE_COUNT EQU  H'11'  ;读取SHTM11字节数计数
  259. SHTM11_READ_BIT_COUNT  EQU  H'12'  ;读取SHTM11 bit计数
  260. SHTM11_READ_BYTE0      EQU  H'0'  ;读取数据的第0字节
  261. SHTM11_READ_BYTE1      EQU  H'14'  ;读取数据的第1字节
  262. SHTM11_READ_BYTE2      EQU  H'15'  ;读取数据的第2字节
  263. SHTM11_READ_BYTE3      EQU  H'16'  ;读取数据的第3字节
  264. SHTM11_READ_BYTE4      EQU  H'17'  ;读取数据的第4字节
  265. ;start rom addr is 0x0000H
  266. ORG 000H
  267.    GOTO _MAIN


  268. ; main function
  269.   ORG 20H
  270. _MAIN:
  271.   CALL INIT_PORTA_REG;     call init porta
  272.   NOP

  273. MAINLOOP:;start of main
  274.      
  275. ;      do someting by itself

  276.         CALL DELAY_680MS   ;
  277.         CALL DELAY_680MS   ;
  278.      CALL READ     ;read some data  ....
  279.   
  280. GOTO MAINLOOP;end of main

  281. ;///////////////////////////////////////////////////////////////////////////////////////
  282. ;//////////////////////////////////////////////////////////////////////////////////////
  283. ;function
  284. READ:
  285.     CALL  CONF_DATA_LINE_OUTPUT
  286.     CALL  CONF_DATA_LINE_HIGHT
  287.     NOP
  288.     CALL  CONF_DATA_LINE_LOW   
  289.     CALL  DELAY_30MS           
  290.     CALL  CONF_DATA_LINE_HIGHT
  291.     CALL  CONF_DATA_LINE_INPUT;
  292.     CALL  DELAY_50US
  293.     BTFSC PORTC,2,0   
  294.     GOTO  ENDOFREAD      
  295.                 GOTO  ACK_SUCCESSFULAY   
  296. ACK_SUCCESSFULAY:
  297.    
  298.    S0: BTFSC PORTC,2,0   
  299.     GOTO  NEXT_0      
  300.                 GOTO  S0   
  301. NEXT_0:
  302.    S1: BTFSS PORTC,2,0   
  303.     GOTO  NEXT_1      
  304.                 GOTO  S1   


  305. NEXT_1:         CALL READ_BYTE
  306.        CALL READ_BYTE
  307.        CALL READ_BYTE
  308.        CALL READ_BYTE
  309.        CALL READ_BYTE
  310. ENDOFREAD:     RETURN

  311. READ_BYTE:
  312.    
  313.     MOVLB   0x1           
  314.     NOP
  315.     MOVLW       0x8            
  316.     MOVWF       SHTM11_READ_BIT_COUNT;
  317.     MOVLB       0x0
  318.     MOVLW       0x0
  319.     MOVWF       SHTM11_READ_BYTE0;
  320.     ;loop body
  321.         BIT:

  322.    S2: BTFSC PORTC,2,0  
  323.     GOTO  NEXT_2      
  324.                 GOTO  S2   
  325. NEXT_2:     CALL DELAY_50US
  326.    
  327.     MOVLB   0xF              ;SFR
  328.     BTFSS PORTC,2,0   
  329.     GOTO  DATA_IS_0     
  330.                 GOTO  DATA_IS_1      

  331.    
  332. DATA_IS_0:
  333.     MOVLB   0x0              ;bank1
  334.     MOVLW   0x00
  335.     RLNCF  SHTM11_READ_BYTE0 ,1,1;
  336.     MOVF   SHTM11_READ_BYTE0,0;
  337.     ANDLW  0xFE;
  338.     MOVWF  SHTM11_READ_BYTE0
  339.     GOTO   OVER_BIT

  340.    
  341. DATA_IS_1:
  342.     MOVLB   0x0              ;bank1
  343.     MOVLW   0x00
  344.     RLNCF  SHTM11_READ_BYTE0 ,1,1;
  345.     MOVF   SHTM11_READ_BYTE0,0;
  346.     IORLW  0x01;
  347.     MOVWF  SHTM11_READ_BYTE0;
  348. ;            
  349.     MOVLB   0xF             ;SFR
  350. WAIT_1_OVER: BTFSS PORTC,2,0   
  351.     GOTO  OVER_BIT     
  352.                 GOTO  WAIT_1_OVER     
  353.    
  354. ;    loop  body

  355. OVER_BIT:  DECFSZ  SHTM11_READ_BIT_COUNT,1  
  356.          GOTO BIT         
  357. ;    end of loop
  358.   
  359.      RETURN
  360. ;**********************Pulled(x)******************************************************
  361. CONF_DATA_LINE_HIGHT:
  362.      
  363.     MOVLB   0xF            
  364.        BSF    PORTC  , 2     
  365.     RETURN
  366. ;**********************Low(x)********************************************************
  367. CONF_DATA_LINE_LOW:   
  368.    
  369.     MOVLB   0xF              
  370.        BCF    PORTC  , 2     
  371.     RETURN
  372. ;**********************Output(x)******************************************************
  373. CONF_DATA_LINE_OUTPUT:
  374.     MOVLB   0xF              
  375.        BCF   TRISC  , 2
  376.     RETURN
  377. ;**********************Input(x)*******************************************************
  378. CONF_DATA_LINE_INPUT:
  379.     MOVLB   0xF              
  380.     BSF   TRISC  , 2
  381.     RETURN
  382. ;*********************Iintportx*******************************************************
  383. INIT_PORTA_REG:
  384. ;    init portx as output of all
  385.     MOVLB   0xF            
  386.     MOVLW   0x00            
  387.     MOVWF   TRISC         
  388.     MOVLW   0xFF            
  389.     MOVWF   ANSELC        
  390.    
  391.     MOVLW   0x00           
  392.     MOVWF   SLRCON         
  393.     MOVLW   0xFF           
  394.     MOVWF   PORTC         
  395.     RETURN
  396. ;*********************DELAY_30MS*******************************************************************
  397. DELAY_30MS:
  398.    
  399.     MOVLB 0x1  ;使用bank1ram中的TICK      1t
  400.     MOVLW       0x10   
  401.            MOVWF       TICK1   
  402.    D1: MOVLW       0xff   
  403.            MOVWF       TICK   
  404.      D0: CALL        DELAY_10US
  405.     DECFSZ      TICK,1   
  406.          GOTO        D0     
  407.     DECFSZ      TICK1,1   
  408.          GOTO        D1                                          
  409.     RETURN
  410. ;*********************DELAY_70uS*******************************************************************
  411. DELAY_70US:
  412.     MOVLB   0x1
  413.     MOVLW   7     
  414.            MOVWF   TICK  
  415.       D2:CALL    DELAY_10US
  416.     DECFSZ  TICK,1  
  417.          GOTO    D2                                 
  418.     RETURN
  419. ;*********************DELAY_85uS*******************************************************************
  420. DELAY_85US:
  421.     MOVLB  0x1  ;使用bank1ram中的TICK      1t
  422.     MOVLW  9     
  423.            MOVWF  TICK   
  424.       D3:CALL   DELAY_10US
  425.     DECFSZ TICK,1   
  426.          GOTO   D3      
  427.     RETURN

  428. ;*********************DELAY_85uS*******************************************************************
  429. DELAY_50US:
  430.     MOVLB  0x1  ;使用bank1ram中的TICK      1t
  431.     MOVLW  5      
  432.            MOVWF  TICK   
  433.       D6: CALL  DELAY_10US
  434.     DECFSZ TICK,1   
  435.          GOTO   D6                                   
  436.     RETURN

  437. ;*********************DELAY_680MS*******************************************************************
  438. DELAY_680MS:
  439.     MOVLB 0x1  ;使用bank1ram中的TICK     
  440.     MOVLW       0xFF     
  441.            MOVWF       TICK1   
  442.    D5: MOVLW       0xff     
  443.            MOVWF       TICK   
  444.      D4: CALL        DELAY_10US
  445.     DECFSZ      TICK,1   
  446.          GOTO        D4      
  447.     DECFSZ      TICK1,1   
  448.          GOTO        D5                                       
  449.     RETURN
  450. ;*********************DELAY_10US*******************************************************************
  451. DELAY_10US:
  452. NOP
  453. NOP
  454. NOP
  455. NOP
  456. NOP
  457. NOP
  458. NOP
  459. NOP
  460. NOP
  461. NOP
  462. NOP
  463. NOP
  464. NOP
  465. NOP
  466. NOP
  467. NOP
  468. NOP
  469. NOP
  470. NOP
  471. NOP
  472. NOP
  473. NOP
  474. NOP
  475. NOP
  476. NOP
  477. NOP
  478. NOP
  479. NOP
  480. NOP
  481. NOP
  482. NOP
  483. NOP
  484. NOP
  485. NOP
  486. NOP
  487. NOP
  488. NOP
  489. NOP
  490. NOP
  491. NOP
  492. NOP
  493. NOP
  494. NOP
  495. NOP
  496. NOP
  497. NOP
  498. NOP
  499. NOP
  500. NOP
  501. NOP
  502. NOP
  503. NOP
  504. NOP
  505. NOP
  506. NOP
  507. NOP
  508. NOP
  509. NOP
  510. RETURN
  511. ;*******************************************************************************************
  512. END
复制代码


回复

使用道具 举报

ID:54731 发表于 2015-6-15 10:31 | 显示全部楼层
抢沙发了,楼主程序为什么是汇编的,不知哦,还是要谢谢你的
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表