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

📄 temperature.lst

📁 单片机实行温度 的测量原理的的程序,简单,明了
💻 LST
📖 第 1 页 / 共 3 页
字号:
__start:
__text_start:
    0030 E5CF      LDI	R28,0x5F
    0031 E0D2      LDI	R29,2
    0032 BFCD      OUT	0x3D,R28
    0033 BFDE      OUT	0x3E,R29
    0034 51C0      SUBI	R28,0x10
    0035 40D0      SBCI	R29,0
    0036 EA0A      LDI	R16,0xAA
    0037 8308      STD	Y+0,R16
    0038 2400      CLR	R0
    0039 E6E0      LDI	R30,0x60
    003A E0F0      LDI	R31,0
    003B E010      LDI	R17,0
    003C 36E1      CPI	R30,0x61
    003D 07F1      CPC	R31,R17
    003E F011      BEQ	0x0041
    003F 9201      ST	R0,Z+
    0040 CFFB      RJMP	0x003C
    0041 8300      STD	Z+0,R16
    0042 E5EF      LDI	R30,0x5F
    0043 E0F0      LDI	R31,0
    0044 E6A0      LDI	R26,0x60
    0045 E0B0      LDI	R27,0
    0046 E010      LDI	R17,0
    0047 35EF      CPI	R30,0x5F
    0048 07F1      CPC	R31,R17
    0049 F021      BEQ	0x004E
    004A 95C8      LPM
    004B 9631      ADIW	R30,1
    004C 920D      ST	R0,X+
    004D CFF9      RJMP	0x0047
    004E D0DE      RCALL	_main
_exit:
    004F CFFF      RJMP	_exit
_delay:
  j                    --> R20
  i                    --> R22
  temp                 --> R16
    0050 D132      RCALL	push_gset2
FILE: D:\AVR调试\temperature\temperature.c
(0001) #include <io8535v.h>
(0002) #include<macros.h>
(0003) #define uchar unsigned char
(0004) #define uint unsigned int
(0005) #pragma interrupt_handler ad_handler:15
(0006) 
(0007) #define Vref 5.0
(0008) 
(0009) const unsigned char tabel[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E,0x89,0xA3,0x8C,0xC8};
(0010) uchar addata;
(0011) 
(0012) 
(0013) void delay(uint temp)//10ms,16M晶振
(0014) {
    0051 C00C      RJMP	0x005E
(0015) 	uchar i,j;	
(0016) 	while(temp--)
(0017) 	{
(0018) 		for(j=213;j>0;j--)//1ms,58
    0052 ED45      LDI	R20,0xD5
    0053 C007      RJMP	0x005B
(0019) 			for(i=148;i>0;i--);//1ms,53	
    0054 E964      LDI	R22,0x94
    0055 C001      RJMP	0x0057
    0056 956A      DEC	R22
    0057 2422      CLR	R2
    0058 1626      CP	R2,R22
    0059 F3E0      BCS	0x0056
    005A 954A      DEC	R20
    005B 2422      CLR	R2
    005C 1624      CP	R2,R20
    005D F3B0      BCS	0x0054
    005E 0118      MOVW	R2,R16
    005F 5001      SUBI	R16,1
    0060 4010      SBCI	R17,0
    0061 2022      TST	R2
    0062 F779      BNE	0x0052
    0063 2033      TST	R3
    0064 F769      BNE	0x0052
    0065 D115      RCALL	pop_gset2
    0066 9508      RET
_LEDSCAN:
  disdata              --> Y+0
  temp                 --> R20
    0067 D11D      RCALL	push_gset1
    0068 01A8      MOVW	R20,R16
    0069 9723      SBIW	R28,3
(0020) 	}	
(0021) }
(0022) 
(0023) void LEDSCAN(temp)//显示程序
(0024) {
(0025)  uchar disdata[3] ={0};
    006A E38E      LDI	R24,0x3E
    006B E090      LDI	R25,0
    006C 01FE      MOVW	R30,R28
    006D E003      LDI	R16,3
    006E E010      LDI	R17,0
    006F 93FA      ST	R31,-Y
    0070 93EA      ST	R30,-Y
    0071 939A      ST	R25,-Y
    0072 938A      ST	R24,-Y
    0073 D173      RCALL	asgncblk
(0026)  
(0027)  disdata[0]=temp/1000;//取最高位
    0074 EE28      LDI	R18,0xE8
    0075 E033      LDI	R19,3
    0076 018A      MOVW	R16,R20
    0077 D0CE      RCALL	div16s
    0078 8308      STD	Y+0,R16
(0028)  disdata[1]=temp%1000/100;//取最二位
    0079 EE28      LDI	R18,0xE8
    007A E033      LDI	R19,3
    007B 018A      MOVW	R16,R20
    007C D0C5      RCALL	mod16s
    007D E624      LDI	R18,0x64
    007E E030      LDI	R19,0
    007F D0C6      RCALL	div16s
    0080 8309      STD	Y+1,R16
(0029)  disdata[2]=temp%100/10;//取最三位
    0081 E624      LDI	R18,0x64
    0082 E030      LDI	R19,0
    0083 018A      MOVW	R16,R20
    0084 D0BD      RCALL	mod16s
    0085 E02A      LDI	R18,0xA
    0086 E030      LDI	R19,0
    0087 D0BE      RCALL	div16s
    0088 830A      STD	Y+2,R16
(0030) 	
(0031)  PORTC|=0x01;//显示第一位
    0089 9AA8      SBI	0x15,0
(0032)  PORTB=tabel[disdata[0]]&0x7f;
    008A E28A      LDI	R24,0x2A
    008B E090      LDI	R25,0
    008C 81E8      LDD	R30,Y+0
    008D 27FF      CLR	R31
    008E 0FE8      ADD	R30,R24
    008F 1FF9      ADC	R31,R25
    0090 91E4      LPM	R30,0(Z)
    0091 77EF      ANDI	R30,0x7F
    0092 BBE8      OUT	0x18,R30
(0033)  delay(1);
    0093 E001      LDI	R16,1
    0094 E010      LDI	R17,0
    0095 DFBA      RCALL	_delay
(0034)  PORTC&=0X00;
    0096 2422      CLR	R2
    0097 BA25      OUT	0x15,R2
(0035)  
(0036)  PORTC|=0x02;//显示第二位
    0098 9AA9      SBI	0x15,1
(0037)  PORTB=tabel[disdata[1]];
    0099 E28A      LDI	R24,0x2A
    009A E090      LDI	R25,0
    009B 81E9      LDD	R30,Y+1
    009C 27FF      CLR	R31
    009D 0FE8      ADD	R30,R24
    009E 1FF9      ADC	R31,R25
    009F 91E4      LPM	R30,0(Z)
    00A0 BBE8      OUT	0x18,R30
(0038)  delay(1);
    00A1 E001      LDI	R16,1
    00A2 E010      LDI	R17,0
    00A3 DFAC      RCALL	_delay
(0039)  PORTC&=0X00;
    00A4 2422      CLR	R2
    00A5 BA25      OUT	0x15,R2
(0040)  
(0041)  PORTC|=0x04;//显示第三位
    00A6 9AAA      SBI	0x15,2
(0042)  PORTB=tabel[disdata[2]];
    00A7 E28A      LDI	R24,0x2A
    00A8 E090      LDI	R25,0
    00A9 81EA      LDD	R30,Y+2
    00AA 27FF      CLR	R31
    00AB 0FE8      ADD	R30,R24
    00AC 1FF9      ADC	R31,R25
    00AD 91E4      LPM	R30,0(Z)
    00AE BBE8      OUT	0x18,R30
(0043)  delay(1);
    00AF E001      LDI	R16,1
    00B0 E010      LDI	R17,0
    00B1 DF9E      RCALL	_delay
(0044)  PORTC&=0X00;
    00B2 2422      CLR	R2
    00B3 BA25      OUT	0x15,R2
    00B4 9623      ADIW	R28,3
    00B5 D0D2      RCALL	pop_gset1
    00B6 9508      RET
_ad_handler:
  Vin                  --> R20
    00B7 D101      RCALL	push_lset
    00B8 D0CA      RCALL	push_gset2
    00B9 9724      SBIW	R28,4
(0045) }
(0046) 
(0047) void ad_handler(void)//中断进入
(0048) {
(0049)      uint Vin;
(0050) //	 uint Vref;
(0051)  	 addata=ADC;
    00BA B024      IN	R2,0x04
    00BB B035      IN	R3,0x05
    00BC 92200060  STS	addata,R2
(0052) 	 Vin=((float)ADC*Vref/1024)*1000;
    00BE B024      IN	R2,0x04
    00BF B035      IN	R3,0x05
    00C0 E501      LDI	R16,0x51
    00C1 E010      LDI	R17,0
    00C2 D0E2      RCALL	lpm32
    00C3 933A      ST	R19,-Y
    00C4 932A      ST	R18,-Y
    00C5 931A      ST	R17,-Y
    00C6 930A      ST	R16,-Y
    00C7 E40D      LDI	R16,0x4D
    00C8 E010      LDI	R17,0
    00C9 D0DB      RCALL	lpm32
    00CA 933A      ST	R19,-Y
    00CB 932A      ST	R18,-Y
    00CC 931A      ST	R17,-Y
    00CD 930A      ST	R16,-Y
    00CE E409      LDI	R16,0x49
    00CF E010      LDI	R17,0
    00D0 D0D4      RCALL	lpm32
    00D1 933A      ST	R19,-Y
    00D2 932A      ST	R18,-Y
    00D3 931A      ST	R17,-Y
    00D4 930A      ST	R16,-Y
    00D5 0181      MOVW	R16,R2
    00D6 9516      LSR	R17
    00D7 9507      ROR	R16
    00D8 D165      RCALL	int2fp
    00D9 933A      ST	R19,-Y
    00DA 932A      ST	R18,-Y
    00DB 931A      ST	R17,-Y
    00DC 930A      ST	R16,-Y
    00DD D290      RCALL	empy32fs
    00DE 0181      MOVW	R16,R2
    00DF 7001      ANDI	R16,1
    00E0 7010      ANDI	R17,0
    00E1 D15C      RCALL	int2fp
    00E2 933A      ST	R19,-Y
    00E3 932A      ST	R18,-Y
    00E4 931A      ST	R17,-Y
    00E5 930A      ST	R16,-Y
    00E6 D1AC      RCALL	add32fs
    00E7 D286      RCALL	empy32fs
    00E8 E405      LDI	R16,0x45
    00E9 E010      LDI	R17,0
    00EA D0BA      RCALL	lpm32
    00EB 933A      ST	R19,-Y
    00EC 932A      ST	R18,-Y
    00ED 931A      ST	R17,-Y
    00EE 930A      ST	R16,-Y
    00EF D1F7      RCALL	div32fs
    00F0 D27F      RCALL	empy32f
    00F1 01FE      MOVW	R30,R28
    00F2 8300      STD	Z+0,R16
    00F3 8311      STD	Z+1,R17
    00F4 8322      STD	Z+2,R18
    00F5 8333      STD	Z+3,R19
    00F6 01FE      MOVW	R30,R28
    00F7 8020      LDD	R2,Z+0
    00F8 8031      LDD	R3,Z+1
    00F9 8042      LDD	R4,Z+2
    00FA 8053      LDD	R5,Z+3
    00FB 925A      ST	R5,-Y
    00FC 924A      ST	R4,-Y
    00FD 923A      ST	R3,-Y
    00FE 922A      ST	R2,-Y
    00FF E401      LDI	R16,0x41
    0100 E010      LDI	R17,0
    0101 D0A3      RCALL	lpm32
    0102 933A      ST	R19,-Y
    0103 932A      ST	R18,-Y
    0104 931A      ST	R17,-Y
    0105 930A      ST	R16,-Y
    0106 D238      RCALL	cmp32f
    0107 F0B4      BLT	0x011E
    0108 01FE      MOVW	R30,R28
    0109 8020      LDD	R2,Z+0
    010A 8031      LDD	R3,Z+1
    010B 8042      LDD	R4,Z+2
    010C 8053      LDD	R5,Z+3
    010D 925A      ST	R5,-Y
    010E 924A      ST	R4,-Y
    010F 923A      ST	R3,-Y
    0110 922A      ST	R2,-Y
    0111 E401      LDI	R16,0x41
    0112 E010      LDI	R17,0
    0113 D091      RCALL	lpm32
    0114 933A      ST	R19,-Y
    0115 932A      ST	R18,-Y
    0116 931A      ST	R17,-Y
    0117 930A      ST	R16,-Y
    0118 D181      RCALL	sub32f
    0119 D0E6      RCALL	fp2int
    011A 01B8      MOVW	R22,R16
    011B 5060      SUBI	R22,0
    011C 4870      SBCI	R23,0x80
    011D C007      RJMP	0x0125
    011E 01FE      MOVW	R30,R28
    011F 8100      LDD	R16,Z+0
    0120 8111      LDD	R17,Z+1
    0121 8122      LDD	R18,Z+2
    0122 8133      LDD	R19,Z+3
    0123 D0DC      RCALL	fp2int
    0124 01B8      MOVW	R22,R16
    0125 01AB      MOVW	R20,R22
(0053) 	 LEDSCAN(Vin);
    0126 018A      MOVW	R16,R20
    0127 DF3F      RCALL	_LEDSCAN
(0054) 	 ADCSR|=BIT(ADSC);
    0128 9A36      SBI	0x06,6
    0129 9624      ADIW	R28,4
    012A D050      RCALL	pop_gset2
    012B D0A4      RCALL	pop_lset
    012C 9518      RETI
(0055) }
(0056) void main()//主程序
(0057) {
(0058)  	 PORTA=0;
_main:
    012D 2422      CLR	R2
    012E BA2B      OUT	0x1B,R2
(0059) 	 DDRA=0;
    012F BA2A      OUT	0x1A,R2
(0060) 	 PORTC=0x00;
    0130 BA25      OUT	0x15,R2
(0061) 	 DDRC=0xFF;
    0131 EF8F      LDI	R24,0xFF
    0132 BB84      OUT	0x14,R24
(0062) 	 DDRB=0xFF;
    0133 BB87      OUT	0x17,R24
(0063) 	 PORTB=0xFF;
    0134 BB88      OUT	0x18,R24
(0064) 	 ADMUX=0x00;
    0135 B827      OUT	0x07,R2
(0065) 	 ADCSR=0x80;
    0136 E880      LDI	R24,0x80
    0137 B986      OUT	0x06,R24
(0066) 	 ADCSR|=BIT(ADIE);
    0138 9A33      SBI	0x06,3
(0067) 	 //SREG=0x80;
(0068) 	 SEI();
    0139 9478      BSET	7
(0069) 	 ADCSR|=BIT(ADSC);
    013A 9A36      SBI	0x06,6
(0070) 	 while(1);
FILE: <library>
    013B CFFF      RJMP	0x013B
    013C 9508      RET
push_arg4:
    013D 933A      ST	R19,-Y
    013E 932A      ST	R18,-Y
push_arg2:
    013F 931A      ST	R17,-Y
    0140 930A      ST	R16,-Y
    0141 9508      RET
mod16s:
    0142 9468      BSET	6
    0143 92DA      ST	R13,-Y
    0144 2ED1      MOV	R13,R17
    0145 C004      RJMP	0x014A
div16s:
    0146 94E8      BCLR	6
    0147 92DA      ST	R13,-Y
    0148 2ED1      MOV	R13,R17
    0149 26D3      EOR	R13,R19
    014A FF17      SBRS	R17,7
    014B C004      RJMP	0x0150
    014C 9510      COM	R17
    014D 9500      COM	R16
    014E 5F0F      SUBI	R16,0xFF
    014F 4F1F      SBCI	R17,0xFF
    0150 FF37      SBRS	R19,7

⌨️ 快捷键说明

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