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

📄 1.lst

📁 基于ATMEGA16的温度传感器原代码
💻 LST
字号:
__text_start:
__start:
    002A E5CF      LDI	R28,0x5F
    002B E0D4      LDI	R29,4
    002C BFCD      OUT	0x3D,R28
    002D BFDE      OUT	0x3E,R29
    002E 51C0      SUBI	R28,0x10
    002F 40D0      SBCI	R29,0
    0030 EA0A      LDI	R16,0xAA
    0031 8308      STD	Y+0,R16
    0032 2400      CLR	R0
    0033 E6E0      LDI	R30,0x60
    0034 E0F0      LDI	R31,0
    0035 E010      LDI	R17,0
    0036 36E1      CPI	R30,0x61
    0037 07F1      CPC	R31,R17
    0038 F011      BEQ	0x003B
    0039 9201      ST	R0,Z+
    003A CFFB      RJMP	0x0036
    003B 8300      STD	Z+0,R16
    003C E5E4      LDI	R30,0x54
    003D E0F0      LDI	R31,0
    003E E6A0      LDI	R26,0x60
    003F E0B0      LDI	R27,0
    0040 E010      LDI	R17,0
    0041 35E4      CPI	R30,0x54
    0042 07F1      CPC	R31,R17
    0043 F021      BEQ	0x0048
    0044 95C8      LPM
    0045 9631      ADIW	R30,1
    0046 920D      ST	R0,X+
    0047 CFF9      RJMP	0x0041
    0048 940E00C7  CALL	_main
_exit:
    004A CFFF      RJMP	_exit
FILE: H:\bbi项目源程序\18b20温度传感器\LED显示18B20\bc7281.h
(0001) 
(0002) #define uchar  unsigned char
(0003) #define clk1   PORTA|=BIT(7)
(0004) #define clk0   PORTA&=~BIT(7)
(0005) #define clkout  DDRA|=BIT(7)
(0006) #define clkin   DDRA&=~BIT(7)
(0007) #define data1  PORTA|=BIT(6)
(0008) #define data0  PORTA&=~BIT(6)
(0009) #define dataout  DDRA|=BIT(6)
(0010) #define datain  DDRA&=~BIT(6)
(0011) unsigned char key_number;
(0012) 
(0013) ////**********************延时*************************//////
(0014) void delay(unsigned int time)
(0015)    {
_delay:
  time                 --> R16
    004B C001      RJMP	0x004D
(0016)     while(time--)
(0017)     asm("nop");
    004C 0000      NOP
    004D 0118      MOVW	R2,R16
    004E 5001      SUBI	R16,1
    004F 4010      SBCI	R17,0
    0050 2022      TST	R2
    0051 F7D1      BNE	0x004C
    0052 2033      TST	R3
    0053 F7C1      BNE	0x004C
    0054 9508      RET
(0018)    }
(0019) ////*********************初始化************************//////
(0020) void  chushihua_bc7281()
(0021)   { 
(0022)    delay(1000);
_chushihua_bc7281:
    0055 EE08      LDI	R16,0xE8
    0056 E013      LDI	R17,3
    0057 DFF3      RCALL	_delay
(0023)    xie_bc7281(0x12,0x80);  //164模式不反相 
    0058 E820      LDI	R18,0x80
    0059 E030      LDI	R19,0
    005A E102      LDI	R16,0x12
    005B E010      LDI	R17,0
    005C D001      RCALL	_xie_bc7281
    005D 9508      RET
_xie_bc7281:
  data                 --> R20
  add                  --> R22
    005E 940E00E2  CALL	push_gset2
    0060 2F42      MOV	R20,R18
    0061 2F60      MOV	R22,R16
(0024)   }	
(0025)   
(0026) ////********************写bc7281*********************//////
(0027) void xie_bc7281(uchar add ,uchar data)
(0028)   {  
(0029)    chuangsong_bc7281(add);
    0062 2F06      MOV	R16,R22
    0063 2711      CLR	R17
    0064 D011      RCALL	_chuangsong_bc7281
(0030)    chuangsong_bc7281(data);
    0065 2F04      MOV	R16,R20
    0066 2711      CLR	R17
    0067 D00E      RCALL	_chuangsong_bc7281
    0068 940E00D9  CALL	pop_gset2
    006A 9508      RET
_du_bc7281:
  add                  --> R20
    006B 940E00E4  CALL	push_gset1
    006D 2F40      MOV	R20,R16
(0031)   }
(0032) ////********************读bc7281********************//////
(0033) uchar du_bc7281(uchar add)
(0034)   {
(0035)    chuangsong_bc7281(add|0x80);      ///////????
    006E 2F04      MOV	R16,R20
    006F 2711      CLR	R17
    0070 6800      ORI	R16,0x80
    0071 D004      RCALL	_chuangsong_bc7281
(0036)    return(jieshou_bc7281());
    0072 D031      RCALL	_jieshou_bc7281
    0073 940E00E7  CALL	pop_gset1
    0075 9508      RET
_chuangsong_bc7281:
  i                    --> R20
  temp                 --> R22
    0076 940E00E2  CALL	push_gset2
    0078 2F60      MOV	R22,R16
(0037)   }
(0038) ////********************传送***********************//////
(0039) void chuangsong_bc7281(uchar temp)
(0040)   { 
(0041)    unsigned char i;
(0042)    data1;
    0079 9ADE      SBI	0x1B,6
(0043)    datain;
    007A 98D6      CBI	0x1A,6
(0044)     do
(0045)     {
(0046) 	clk0;
    007B 98DF      CBI	0x1B,7
(0047) 	clk1;
    007C 9ADF      SBI	0x1B,7
(0048)     }while((PINA&0x40)==0x40);  //直到低电平
    007D B229      IN	R2,0x19
    007E 2433      CLR	R3
    007F FC26      SBRC	R2,6
    0080 CFFA      RJMP	0x007B
(0049)     clk0;
    0081 98DF      CBI	0x1B,7
(0050) 	clk1;
    0082 9ADF      SBI	0x1B,7
(0051)     while(!((PINA&0x40)==0x40));  //直到高电平
    0083 B389      IN	R24,0x19
    0084 7480      ANDI	R24,0x40
    0085 3480      CPI	R24,0x40
    0086 F7E1      BNE	0x0083
(0052)     delay(1000);
    0087 EE08      LDI	R16,0xE8
    0088 E013      LDI	R17,3
    0089 DFC1      RCALL	_delay
(0053) 	dataout;
    008A 9AD6      SBI	0x1A,6
(0054) 	for(i=0;i<8;i++)
    008B 2744      CLR	R20
    008C C00E      RJMP	0x009B
(0055) 	   {
(0056) 	    if((temp&0x80)==0)
    008D FD67      SBRC	R22,7
    008E C002      RJMP	0x0091
(0057) 		data0;
    008F 98DE      CBI	0x1B,6
    0090 C001      RJMP	0x0092
(0058) 		else
(0059) 		data1;
    0091 9ADE      SBI	0x1B,6
(0060) 		temp=temp*2;
    0092 E082      LDI	R24,2
    0093 9F86      MUL	R24,R22
    0094 2D60      MOV	R22,R0
(0061) 		clk0;
    0095 98DF      CBI	0x1B,7
(0062) 		delay(5);
    0096 E005      LDI	R16,5
    0097 E010      LDI	R17,0
    0098 DFB2      RCALL	_delay
(0063) 		clk1;
    0099 9ADF      SBI	0x1B,7
    009A 9543      INC	R20
    009B 3048      CPI	R20,0x8
    009C F380      BCS	0x008D
(0064) 	   }
(0065) 	 data1;
    009D 9ADE      SBI	0x1B,6
(0066) 	delay(10);
    009E E00A      LDI	R16,0xA
    009F E010      LDI	R17,0
    00A0 DFAA      RCALL	_delay
    00A1 940E00D9  CALL	pop_gset2
    00A3 9508      RET
_jieshou_bc7281:
  i                    --> R20
  j                    --> R22
    00A4 940E00E2  CALL	push_gset2
(0067)   }
(0068)  ////*******************接收**********************////// 
(0069) uchar jieshou_bc7281()
(0070)  {
(0071)    uchar i,j;
(0072)    datain;
    00A6 98D6      CBI	0x1A,6
(0073)    clk0;
    00A7 98DF      CBI	0x1B,7
(0074)    clk1;
    00A8 9ADF      SBI	0x1B,7
(0075)    while((PINA&0X40)==0X40);
    00A9 B229      IN	R2,0x19
    00AA 2433      CLR	R3
    00AB FC26      SBRC	R2,6
    00AC CFFC      RJMP	0x00A9
(0076)    clk0;
    00AD 98DF      CBI	0x1B,7
(0077)    clk1;
    00AE 9ADF      SBI	0x1B,7
(0078)  for(i=0;i<8;i++)
    00AF 2744      CLR	R20
    00B0 C00E      RJMP	0x00BF
(0079)    {
(0080)     delay(10);
    00B1 E00A      LDI	R16,0xA
    00B2 E010      LDI	R17,0
    00B3 DF97      RCALL	_delay
(0081) 	j=j*2;
    00B4 E082      LDI	R24,2
    00B5 9F86      MUL	R24,R22
    00B6 2D60      MOV	R22,R0
(0082) 	if((PINA&0x40)==0x40)
    00B7 B389      IN	R24,0x19
    00B8 7480      ANDI	R24,0x40
    00B9 3480      CPI	R24,0x40
    00BA F409      BNE	0x00BC
(0083)      {
(0084) 	 j=j|0x01;
    00BB 6061      ORI	R22,1
(0085) 	  }
(0086) 	clk0;
    00BC 98DF      CBI	0x1B,7
(0087) 	clk1;  
    00BD 9ADF      SBI	0x1B,7
    00BE 9543      INC	R20
    00BF 3048      CPI	R20,0x8
    00C0 F380      BCS	0x00B1
(0088)     }
(0089)    clk0;
    00C1 98DF      CBI	0x1B,7
(0090)    clk1;
    00C2 9ADF      SBI	0x1B,7
(0091)    return(j);
    00C3 2F06      MOV	R16,R22
    00C4 940E00D9  CALL	pop_gset2
    00C6 9508      RET
FILE: H:\bbi项目源程序\18b20温度传感器\LED显示18B20\1.c
(0001) #include<macros.h>
(0002) #include<iom16v.h>
(0003) #include"bc7281.h"
(0004) /////*************初始化**************///////
(0005) 
(0006) 	
(0007) /*/////**************主函数1820**************/////
(0008) void main()    
(0009)    {    
(0010)        
(0011) 		DDRA|=BIT(7);         //脉冲口CLK设置成输出
_main:
    00C7 9AD7      SBI	0x1A,7
(0012) 		chushihua_bc7281();
    00C8 DF8C      RCALL	_chushihua_bc7281
(0013) 		 xie_bc7281(0x15,05);
    00C9 E025      LDI	R18,5
    00CA E105      LDI	R16,0x15
    00CB DF92      RCALL	_xie_bc7281
(0014) 		 xie_bc7281(0x15,10);
    00CC E02A      LDI	R18,0xA
    00CD E105      LDI	R16,0x15
    00CE DF8F      RCALL	_xie_bc7281
(0015) 		 xie_bc7281(0x15,25);
    00CF E129      LDI	R18,0x19
    00D0 E105      LDI	R16,0x15
    00D1 DF8C      RCALL	_xie_bc7281
(0016) 		 xie_bc7281(0x15,45);
    00D2 E22D      LDI	R18,0x2D
    00D3 E105      LDI	R16,0x15
    00D4 DF89      RCALL	_xie_bc7281
(0017) 		 xie_bc7281(0x15,35);   
FILE: <library>
    00D5 E223      LDI	R18,0x23
    00D6 E105      LDI	R16,0x15
    00D7 DF86      RCALL	_xie_bc7281
    00D8 9508      RET
pop_gset2:
    00D9 E0E2      LDI	R30,2
    00DA 940C00E8  JMP	pop
push_gset5:
    00DC 92FA      ST	R15,-Y
    00DD 92EA      ST	R14,-Y
push_gset4:
    00DE 92DA      ST	R13,-Y
    00DF 92CA      ST	R12,-Y
push_gset3:
    00E0 92BA      ST	R11,-Y
    00E1 92AA      ST	R10,-Y
push_gset2:
    00E2 937A      ST	R23,-Y
    00E3 936A      ST	R22,-Y
push_gset1:
    00E4 935A      ST	R21,-Y
    00E5 934A      ST	R20,-Y
    00E6 9508      RET
pop_gset1:
    00E7 E0E1      LDI	R30,1
pop:
    00E8 9149      LD	R20,Y+
    00E9 9159      LD	R21,Y+
    00EA FDE0      SBRC	R30,0
    00EB 9508      RET
    00EC 9169      LD	R22,Y+
    00ED 9179      LD	R23,Y+
    00EE FDE1      SBRC	R30,1
    00EF 9508      RET
    00F0 90A9      LD	R10,Y+
    00F1 90B9      LD	R11,Y+
    00F2 FDE2      SBRC	R30,2
    00F3 9508      RET
    00F4 90C9      LD	R12,Y+
    00F5 90D9      LD	R13,Y+
    00F6 FDE3      SBRC	R30,3
    00F7 9508      RET
    00F8 90E9      LD	R14,Y+
    00F9 90F9      LD	R15,Y+
    00FA 9508      RET

⌨️ 快捷键说明

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