⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 h2test.lst

📁 基于AVR单片机的热电偶测量系统源码
💻 LST
📖 第 1 页 / 共 5 页
字号:
    07DC 9A92      SBI	0x12,2
(0050)         	wait; 
    07DD 0000      NOP
    07DE 0000      NOP
(0051)         	mClrDS1302SCK; 
    07DF 9892      CBI	0x12,2
(0052)         	wait;
    07E0 0000      NOP
    07E1 0000      NOP
    07E2 9543      INC	R20
    07E3 3048      CPI	R20,0x8
    07E4 F358      BCS	0x07D0
(0053)     	} 
(0054)      
(0055)         wait; 
    07E5 0000      NOP
    07E6 0000      NOP
(0056)         mClrDS1302RST;
    07E7 9893      CBI	0x12,3
(0057)         wait;
    07E8 0000      NOP
    07E9 0000      NOP
    07EA 940E0EB9  CALL	pop_gset3
    07EC 9508      RET
_pDS1302_Read:
  data                 --> R20
  i                    --> R22
  reg                  --> R10
    07ED 940E0EC6  CALL	push_gset3
    07EF 2EA0      MOV	R10,R16
(0058) } 
(0059) 
(0060) unsigned char pDS1302_Read(unsigned char reg) 
(0061) { 
(0062)     unsigned char data=0,i; 
    07F0 2744      CLR	R20
(0063)          
(0064)     mDS1302IO_Out; 
    07F1 9A8C      SBI	0x11,4
(0065)     reg+=1;//读标志 
    07F2 94A3      INC	R10
(0066)     mSetDS1302IO; 
    07F3 9A94      SBI	0x12,4
(0067)           
(0068)     mClrDS1302RST;
    07F4 9893      CBI	0x12,3
(0069)     wait; 
    07F5 0000      NOP
    07F6 0000      NOP
(0070)     mClrDS1302SCK;
    07F7 9892      CBI	0x12,2
(0071)     wait;
    07F8 0000      NOP
    07F9 0000      NOP
(0072) 	wait;
    07FA 0000      NOP
    07FB 0000      NOP
(0073)     mSetDS1302RST;
    07FC 9A93      SBI	0x12,3
(0074)     wait;
    07FD 0000      NOP
    07FE 0000      NOP
(0075)          
(0076)     for(i=0;i<8;i++) 
    07FF 2766      CLR	R22
    0800 C013      RJMP	0x0814
(0077)     {  
(0078)         if(reg&BIT(i))
    0801 E001      LDI	R16,1
    0802 2F16      MOV	R17,R22
    0803 940E0F05  CALL	lsl8
    0805 2C2A      MOV	R2,R10
    0806 2220      AND	R2,R16
    0807 F011      BEQ	0x080A
(0079)         	mSetDS1302IO; 
    0808 9A94      SBI	0x12,4
    0809 C001      RJMP	0x080B
(0080)         else          
(0081)         	mClrDS1302IO; 
    080A 9894      CBI	0x12,4
(0082)         wait; 
    080B 0000      NOP
    080C 0000      NOP
(0083)         mSetDS1302SCK; 
    080D 9A92      SBI	0x12,2
(0084)         wait; 
    080E 0000      NOP
    080F 0000      NOP
(0085)         mClrDS1302SCK;
    0810 9892      CBI	0x12,2
(0086)         wait; 
    0811 0000      NOP
    0812 0000      NOP
    0813 9563      INC	R22
    0814 3068      CPI	R22,0x8
    0815 F358      BCS	0x0801
(0087)     } 
(0088)      
(0089)     mDS1302IO_In; 
    0816 988C      CBI	0x11,4
(0090)     wait;
    0817 0000      NOP
    0818 0000      NOP
(0091) 	wait;
    0819 0000      NOP
    081A 0000      NOP
(0092)          
(0093)     for(i=0;i<8;i++) 
    081B 2766      CLR	R22
    081C C016      RJMP	0x0833
(0094)     {  
(0095)          if(mTestDS1302IO)
    081D 9B84      SBIS	0x10,4
    081E C006      RJMP	0x0825
(0096)          	data |= BIT(i); 
    081F E001      LDI	R16,1
    0820 2F16      MOV	R17,R22
    0821 940E0F05  CALL	lsl8
    0823 2B40      OR	R20,R16
    0824 C007      RJMP	0x082C
(0097)          else            
(0098)             data &= ~BIT(i); 
    0825 E001      LDI	R16,1
    0826 2F16      MOV	R17,R22
    0827 940E0F05  CALL	lsl8
    0829 2E20      MOV	R2,R16
    082A 9420      COM	R2
    082B 2142      AND	R20,R2
(0099)          mSetDS1302SCK; 
    082C 9A92      SBI	0x12,2
(0100)          wait; 
    082D 0000      NOP
    082E 0000      NOP
(0101)          mClrDS1302SCK;
    082F 9892      CBI	0x12,2
(0102)          wait; 
    0830 0000      NOP
    0831 0000      NOP
    0832 9563      INC	R22
    0833 3068      CPI	R22,0x8
    0834 F340      BCS	0x081D
(0103)     } 
(0104)     wait;
    0835 0000      NOP
    0836 0000      NOP
(0105)     mClrDS1302RST;
    0837 9893      CBI	0x12,3
(0106)     wait;
    0838 0000      NOP
    0839 0000      NOP
(0107)      
(0108)     return(data); 
    083A 2F04      MOV	R16,R20
    083B 940E0EB9  CALL	pop_gset3
    083D 9508      RET
(0109) } 
(0110) 
(0111) void pDS1302_Init(void) 
(0112) { 
(0113)     pDS1302_Write(mDS1302_CONTROL_Reg,0x00); //关闭写保护  
_pDS1302_Init:
    083E 2722      CLR	R18
    083F E80E      LDI	R16,0x8E
    0840 DF67      RCALL	_pDS1302_Write
(0114)   //pDS1302_Write(mDS1302_SEC_Reg,0x80);     //暂停  
(0115)     pDS1302_Write(mDS1302_CHARGER_Reg,0x00); //涓流充电 A9  
    0841 2722      CLR	R18
    0842 E900      LDI	R16,0x90
    0843 DF64      RCALL	_pDS1302_Write
(0116)   	pDS1302_Write(mDS1302_HOUR_Reg,0x08);    //时 
    0844 E028      LDI	R18,0x8
    0845 E804      LDI	R16,0x84
    0846 DF61      RCALL	_pDS1302_Write
(0117)   	pDS1302_Write(mDS1302_MIN_Reg,0x34);     //分 
    0847 E324      LDI	R18,0x34
    0848 E802      LDI	R16,0x82
    0849 DF5E      RCALL	_pDS1302_Write
(0118)   	pDS1302_Write(mDS1302_SEC_Reg,0x20);     //秒 
    084A E220      LDI	R18,0x20
    084B E800      LDI	R16,0x80
    084C DF5B      RCALL	_pDS1302_Write
(0119)     pDS1302_Write(mDS1302_CONTROL_Reg,0x80); //打开写保护 
    084D E820      LDI	R18,0x80
    084E E80E      LDI	R16,0x8E
    084F DF58      RCALL	_pDS1302_Write
    0850 9508      RET
_Delay10ms:
  TimeCount            --> R20
  j                    --> R22
  count                --> R16
    0851 940E0EC8  CALL	push_gset2
FILE: D:\zhangyu\H2test\program\6675.c
(0001) /************************************************************
(0002)   FileName: 6675.c
(0003)   Description: 温度函数,读取并且显示温度                      
(0004)   Function List:  
(0005) 1. read_max6675()  读取6675的转换结果
(0006) 2. max6675_display()  显示6675的转换结果
(0007) 3. show_temperature()  读取并显示6675的转换结果
(0008) 4. Delay10ms()  延时函数 
(0009) ***********************************************************/
(0010) #include <iom16v.h>
(0011) #include <macros.h>
(0012) #include "6675.h"
(0013) #include "main.h"
(0014) #include "lcd.h"
(0015) 
(0016) void Delay10ms(unsigned char count)
(0017) {
(0018)      unsigned char TimeCount;
(0019) 	 unsigned int j;
(0020)      TimeCount = count;
    0853 2F40      MOV	R20,R16
    0854 C00A      RJMP	0x085F
(0021) 	 while(TimeCount > 0)
(0022) 	 {
(0023) 	     for(j=0;j<200;j++)
    0855 2766      CLR	R22
    0856 2777      CLR	R23
    0857 C002      RJMP	0x085A
    0858 5F6F      SUBI	R22,0xFF
    0859 4F7F      SBCI	R23,0xFF
    085A 3C68      CPI	R22,0xC8
    085B E0E0      LDI	R30,0
    085C 077E      CPC	R23,R30
    085D F3D0      BCS	0x0858
(0024) 		 {;;}
(0025) 		 TimeCount--;
    085E 954A      DEC	R20
    085F 2422      CLR	R2
    0860 1624      CP	R2,R20
    0861 F398      BCS	0x0855
    0862 940E0EB6  CALL	pop_gset2
    0864 9508      RET
_read_max6675:
  x                    --> R20
  i                    --> R22
    0865 940E0EC8  CALL	push_gset2
(0026) 	 }
(0027) }
(0028) 
(0029) unsigned int read_max6675(void)
(0030) {
(0031)      unsigned char i;
(0032)      unsigned int  x=0; 
    0867 2744      CLR	R20
    0868 2755      CLR	R21
(0033) 	 clr_sck;
    0869 98C1      CBI	0x18,1
(0034)      wait;
    086A 0000      NOP
    086B 0000      NOP
(0035)      clr_cs6675;
    086C 98C0      CBI	0x18,0
(0036)      wait; 
    086D 0000      NOP
    086E 0000      NOP
(0037)      set_sck; 
    086F 9AC1      SBI	0x18,1
(0038)      wait;
    0870 0000      NOP
    0871 0000      NOP
(0039) 	 for(i=0;i<16;i++)   //读取转换结果的12位
    0872 2766      CLR	R22
    0873 C015      RJMP	0x0889
(0040)      {
(0041)         wait;
    0874 0000      NOP
    0875 0000      NOP
(0042) 	    clr_sck;
    0876 98C1      CBI	0x18,1
(0043)         if(so)
    0877 9BB6      SBIS	0x16,6
    0878 C00C      RJMP	0x0885
(0044)         x|=(1<<(15-i));
    0879 2E26      MOV	R2,R22
    087A 2433      CLR	R3
    087B E02F      LDI	R18,0xF
    087C E030      LDI	R19,0
    087D 1922      SUB	R18,R2
    087E 0933      SBC	R19,R3
    087F E001      LDI	R16,1
    0880 E010      LDI	R17,0
    0881 940E0EFE  CALL	lsl16
    0883 2B40      OR	R20,R16
    0884 2B51      OR	R21,R17
(0045)         wait;
    0885 0000      NOP
    0886 0000      NOP
(0046) 	    set_sck;
    0887 9AC1      SBI	0x18,1
    0888 9563      INC	R22
    0889 3160      CPI	R22,0x10
    088A F348      BCS	0x0874
(0047)      }
(0048) 	
(0049) 	 x=(x&0x7fff)>>3; 
    088B 775F      ANDI	R21,0x7F
    088C 9556      LSR	R21
    088D 9547      ROR	R20
    088E 9556      LSR	R21
    088F 9547      ROR	R20
    0890 9556      LSR	R21
    0891 9547      ROR	R20
(0050) 	 set_cs6675;  
    0892 9AC0      SBI	0x18,0
(0051)      return x; 
    0893 018A      MOVW	R16,R20
    0894 940E0EB6  CALL	pop_gset2
    0896 9508      RET
_max6675_display:
  m                    --> R22
  n                    --> R20
  temp                 --> Y+1
  x                    --> R10
    0897 940E0EC6  CALL	push_gset3
    0899 0158      MOVW	R10,R16
    089A 972F      SBIW	R28,0xF
(0052) }
(0053) 
(0054) void max6675_display(unsigned int x)
(0055) {      
(0056)        unsigned int temp[5]={0,0,0,0,0};
    089B E58C      LDI	R24,0x5C
    089C E094      LDI	R25,4
    089D 01FE      MOVW	R30,R28
    089E 9631      ADIW	R30,1
    089F E00A      LDI	R16,0xA
    08A0 E010      LDI	R17,0
    08A1 93FA      ST	R31,-Y
    08A2 93EA      ST	R30,-Y
    08A3 939A      ST	R25,-Y
    08A4 938A      ST	R24,-Y
    08A5 940E0F0B  CALL	asgncblk
(0057)        unsigned int n=0,m=0;
    08A7 2744      CLR	R20
    08A8 2755      CLR	R21
    08A9 2766      CLR	R22
    08AA 2777      CLR	R23
(0058)        m=10237.5*x/4095;
    08AB E702      LDI	R16,0x72
    08AC E014      LDI	R17,4
    08AD 940E0EEA  CALL	lpm32
    08AF 933A      ST	R19,-Y
    08B0 932A      ST	R18,-Y
    08B1 931A      ST	R17,-Y
    08B2 930A      ST	R16,-Y
    08B3 E60E      LDI	R16,0x6E
    08B4 E014      LDI	R17,4
    08B5 940E0EEA  CALL	lpm32
    08B7 933A      ST	R19,-Y
    08B8 932A      ST	R18,-Y
    08B9 931A      ST	R17,-Y
    08BA 930A      ST	R16,-Y
    08BB 0185      MOVW	R16,R10
    08BC 9516      LSR	R17
    08BD 9507      ROR	R16
    08BE 940E0F6C  CALL	int2fp
    08C0 933A      ST	R19,-Y
    08C1 932A      ST	R18,-Y
    08C2 931A      ST	R17,-Y
    08C3 930A      ST	R16,-Y
    08C4 940E10B5  CALL	empy32fs
    08C6 0185      MOVW	R16,R10
    08C7 7001      ANDI	R16,1
    08C8 7010      ANDI	R17,0
    08C9 940E0F6C  CALL	int2fp
    08CB 933A      ST	R19,-Y
    08CC 932A      ST	R18,-Y
    08CD 931A      ST	R17,-Y
    08CE 930A      ST	R16,-Y
    08CF 940E0FC6  CALL	add32fs
    08D1 940E10B5  CALL	empy32fs
    08D3 E60A      LDI	R16,0x6A
    08D4 E014      LDI	R17,4
    08D5 940E0EEA  CALL	lpm32
    08D7 933A      ST	R19,-Y
    08D8 932A      ST	R18,-Y
    08D9 931A      ST	R17,-Y
    08DA 930A      ST	R16,-Y
    08DB 940E102A  CALL	div32f
    08DD 01FE      MOVW	R30,R28
    08DE 8703      STD	Z+11,R16
    08DF 8714      STD	Z+12,R17
    08E0 8725      STD	Z+13,R18
    08E1 8736      STD	Z+14,R19
    08E2 01FE      MOVW	R30,R28
    08E3 8423      LDD	R2,Z+11
    08E4 8434      LDD	R3,Z+12
    08E5 8445      LDD	R4,Z+13
    08E6 8456      LDD	R5,Z+14
    08E7 925A      ST	R5,-Y
    08E8 924A      ST	R4,-Y
    08E9 923A      ST	R3,-Y
    08EA 922A      ST	R2,-Y
    08EB E606      LDI	R16,0x66
    08EC E014      LDI	R17,4
    08ED 940E0EEA  CALL	lpm32
    08EF 933A      ST	R19,-Y
    08F0 932A      ST	R18,-Y
    08F1 931A      ST	R17,-Y
    08F2 930A      ST	R16,-Y
    08F3 940E1084  CALL	cmp32f
    08F5 F0D4      BLT	0x0910
    08F6 01FE      MOVW	R30,R28
    08F7 8423      LDD	R2,Z+11
    08F8 8434      LDD	R3,Z+12
    08F9 8445      LDD	R4,Z+13
    08FA 8456      LDD	R5,Z+14
    08FB 925A      ST	R5,-Y
    08FC 924A      ST	R4,-Y
    08FD 92

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -