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

📄 仿真多点温度测量(毕业设计).lst

📁 电机的不同转动轻快
💻 LST
📖 第 1 页 / 共 3 页
字号:
__text_start:
__start:
      5A E5CF      LDI	R28,0x5F
      5B E0D4      LDI	R29,4
      5C BFCD      OUT	0x3D,R28
      5D BFDE      OUT	0x3E,R29
      5E 51CE      SUBI	R28,0x1E
      5F 40D0      SBCI	R29,0
      60 EA0A      LDI	R16,0xAA
      61 8308      STD	Y+0,R16
      62 2400      CLR	R0
      63 EBEC      LDI	R30,0xBC
      64 E0F0      LDI	R31,0
      65 E010      LDI	R17,0
      66 3CE5      CPI	R30,0xC5
      67 07F1      CPC	R31,R17
      68 F011      BEQ	0x006B
      69 9201      ST	R0,Z+
      6A CFFB      RJMP	0x0066
      6B 8300      STD	Z+0,R16
      6C E5E8      LDI	R30,0x58
      6D E0F0      LDI	R31,0
      6E E6A0      LDI	R26,0x60
      6F E0B0      LDI	R27,0
      70 E010      LDI	R17,0
      71 E000      LDI	R16,0
      72 BF0B      OUT	0x3B,R16
      73 3BE4      CPI	R30,0xB4
      74 07F1      CPC	R31,R17
      75 F021      BEQ	0x007A
      76 95C8      LPM
      77 9631      ADIW	R30,1
      78 920D      ST	R0,X+
      79 CFF9      RJMP	0x0073
      7A 940E 028A CALL	_main
_exit:
      7C CFFF      RJMP	_exit
_delay1ms:
  j                    --> R20
  i                    --> R16
      7D 934A      ST	R20,-Y
      7E 935A      ST	R21,-Y
FILE: C:\DOCUME~1\徐胜辉\桌面\新建文件夹\温度测量.c
(0001) #include<iom16v.h>
(0002) #define uchar unsigned char
(0003) #define uint unsigned int
(0004) #define RS_1 PORTA|=(1<<3)
(0005) #define RS_0 PORTA&=~(1<<3)
(0006) #define RW_1 PORTA|=(1<<4)
(0007) #define RW_0 PORTA&=~(1<<4)
(0008) #define EN_1 PORTA|=(1<<5)
(0009) #define EN_0 PORTA&=~(1<<5)
(0010)  unsigned char  str1[]={"temperature1: "};
(0011)  unsigned char  str2[]={"temperature2: "};
(0012)  unsigned char  str3[]={"temperature3: "};
(0013)  unsigned char  str4[]={"temperature4: "};
(0014) unsigned char  str5[4][8]={
(0015)  {0x28,0x45,0xc5,0xb8,0x00,0x00,0x00,0xfd},
(0016)  {0x28,0x30,0xc5,0xb8,0x00,0x00,0x00,0x8e},
(0017)  {0x28,0x31,0xc5,0xb8,0x00,0x00,0x00,0xb9},
(0018)  {0x28,0x32,0xc5,0xb8,0x00,0x00,0x00,0xe0}
(0019)  };
(0020)  uchar  adata[5];
(0021)  uchar n;
(0022)  uint tvalue;//温度
(0023)  uchar tflag;//温度正负标志
(0024) /*************************lcd1602程序**************************/
(0025) void delay1ms(uint i)//延时1毫秒(不够精确的)
(0026) {
(0027)   unsigned int j;
(0028)   for(;i>0;i--)
      7F C00B      RJMP	0x008B
(0029)   for(j=0;j<1142;j++);
      80 2744      CLR	R20
      81 2755      CLR	R21
      82 C002      RJMP	0x0085
      83 5F4F      SUBI	R20,0xFF
      84 4F5F      SBCI	R21,0xFF
      85 3746      CPI	R20,0x76
      86 E0E4      LDI	R30,4
      87 075E      CPC	R21,R30
      88 F3D0      BCS	0x0083
      89 5001      SUBI	R16,1
      8A 4010      SBCI	R17,0
      8B 3000      CPI	R16,0
      8C 0701      CPC	R16,R17
      8D F791      BNE	0x0080
      8E 9159      LD	R21,Y+
      8F 9149      LD	R20,Y+
      90 9508      RET
_wr_com:
  com                  --> R10
      91 92AA      ST	R10,-Y
      92 2EA0      MOV	R10,R16
(0030) }
(0031) void wr_com(unsigned char com)//写指令//
(0032) {
(0033)    delay1ms(1);
      93 E001      LDI	R16,1
      94 E010      LDI	R17,0
      95 DFE7      RCALL	_delay1ms
(0034)    RS_0;
      96 98DB      CBI	0x1B,3
(0035)    RW_0;
      97 98DC      CBI	0x1B,4
(0036)    EN_0;
      98 98DD      CBI	0x1B,5
(0037)    PORTB=com;
      99 BAA8      OUT	0x18,R10
(0038)    delay1ms(1);
      9A E001      LDI	R16,1
      9B E010      LDI	R17,0
      9C DFE0      RCALL	_delay1ms
(0039)    EN_1;
      9D 9ADD      SBI	0x1B,5
(0040)    delay1ms(1);
      9E E001      LDI	R16,1
      9F E010      LDI	R17,0
      A0 DFDC      RCALL	_delay1ms
(0041)    EN_0;
      A1 98DD      CBI	0x1B,5
      A2 90A9      LD	R10,Y+
      A3 9508      RET
_wr_dat:
  dat                  --> R10
      A4 92AA      ST	R10,-Y
      A5 2EA0      MOV	R10,R16
(0042) }
(0043) void wr_dat(unsigned char dat)//写数据//
(0044) {
(0045)   delay1ms(1);
      A6 E001      LDI	R16,1
      A7 E010      LDI	R17,0
      A8 DFD4      RCALL	_delay1ms
(0046)    RS_1;
      A9 9ADB      SBI	0x1B,3
(0047)    RW_0;
      AA 98DC      CBI	0x1B,4
(0048)    EN_0;
      AB 98DD      CBI	0x1B,5
(0049)    PORTB=dat;
      AC BAA8      OUT	0x18,R10
(0050)    delay1ms(1);
      AD E001      LDI	R16,1
      AE E010      LDI	R17,0
      AF DFCD      RCALL	_delay1ms
(0051)    EN_1;
      B0 9ADD      SBI	0x1B,5
(0052)    delay1ms(1);
      B1 E001      LDI	R16,1
      B2 E010      LDI	R17,0
      B3 DFC9      RCALL	_delay1ms
(0053)    EN_0;
      B4 98DD      CBI	0x1B,5
      B5 90A9      LD	R10,Y+
      B6 9508      RET
(0054) }
(0055) void lcd_init()//初始化设置//
(0056) {
(0057)    DDRB|=0xFF;      /*I/O口方向设置*/
_lcd_init:
      B7 B387      IN	R24,0x17
      B8 6F8F      ORI	R24,0xFF
      B9 BB87      OUT	0x17,R24
(0058)  DDRA|=(1<<3)|(1<<4)|(1<<5);
      BA B38A      IN	R24,0x1A
      BB 6388      ORI	R24,0x38
      BC BB8A      OUT	0x1A,R24
(0059)  delay1ms(15);
      BD E00F      LDI	R16,0xF
      BE E010      LDI	R17,0
      BF DFBD      RCALL	_delay1ms
(0060)   wr_com(0x38);delay1ms(5);
      C0 E308      LDI	R16,0x38
      C1 DFCF      RCALL	_wr_com
      C2 E005      LDI	R16,5
      C3 E010      LDI	R17,0
      C4 DFB8      RCALL	_delay1ms
(0061)    wr_com(0x08);delay1ms(5);
      C5 E008      LDI	R16,0x8
      C6 DFCA      RCALL	_wr_com
      C7 E005      LDI	R16,5
      C8 E010      LDI	R17,0
      C9 DFB3      RCALL	_delay1ms
(0062)     wr_com(0x01);delay1ms(5);
      CA E001      LDI	R16,1
      CB DFC5      RCALL	_wr_com
      CC E005      LDI	R16,5
      CD E010      LDI	R17,0
      CE DFAE      RCALL	_delay1ms
(0063)      wr_com(0x06);delay1ms(5);
      CF E006      LDI	R16,6
      D0 DFC0      RCALL	_wr_com
      D1 E005      LDI	R16,5
      D2 E010      LDI	R17,0
      D3 DFA9      RCALL	_delay1ms
(0064)       wr_com(0x0c);delay1ms(5);
      D4 E00C      LDI	R16,0xC
      D5 DFBB      RCALL	_wr_com
      D6 E005      LDI	R16,5
      D7 E010      LDI	R17,0
      D8 DFA4      RCALL	_delay1ms
      D9 9508      RET
_display:
  p                    --> R20
      DA 934A      ST	R20,-Y
      DB 935A      ST	R21,-Y
      DC 01A8      MOVW	R20,R16
(0065) }
(0066) 
(0067) void display(unsigned char *p)//显示//
(0068) {
      DD C008      RJMP	0x00E6
(0069) while(*p!='\0')
(0070) {
(0071) wr_dat(*p);
      DE 01FA      MOVW	R30,R20
      DF 8100      LDD	R16,Z+0
      E0 DFC3      RCALL	_wr_dat
(0072) p++;
      E1 5F4F      SUBI	R20,0xFF
      E2 4F5F      SBCI	R21,0xFF
(0073) delay1ms(1);
      E3 E001      LDI	R16,1
      E4 E010      LDI	R17,0
      E5 DF97      RCALL	_delay1ms
      E6 01FA      MOVW	R30,R20
      E7 8020      LDD	R2,Z+0
      E8 2022      TST	R2
      E9 F7A1      BNE	0x00DE
      EA 9159      LD	R21,Y+
      EB 9149      LD	R20,Y+
      EC 9508      RET
(0074) }
(0075) }
(0076) 
(0077) /******************************ds1820程序***************************************/
(0078) void delay_18B20(int time)
(0079) {
(0080) do
(0081) time--;
_delay_18B20:
  time                 --> R16
      ED 5001      SUBI	R16,1
      EE 4010      SBCI	R17,0
(0082) while(time>1);
      EF E081      LDI	R24,1
      F0 E090      LDI	R25,0
      F1 1780      CP	R24,R16
      F2 0791      CPC	R25,R17
      F3 F3CC      BLT	0x00ED
      F4 9508      RET
_ds1820rst:
  ack                  --> R20
      F5 934A      ST	R20,-Y
(0083) }
(0084) unsigned char ds1820rst()/*ds1820复位*/
(0085) {
(0086) unsigned char ack;
(0087) DDRA|=0x01;
      F6 9AD0      SBI	0x1A,0
(0088) PORTA&=0xfe;
      F7 B38B      IN	R24,0x1B
      F8 7F8E      ANDI	R24,0xFE
      F9 BB8B      OUT	0x1B,R24
(0089) delay_18B20(500);
      FA EF04      LDI	R16,0xF4
      FB E011      LDI	R17,1
      FC DFF0      RCALL	_delay_18B20
(0090) PORTA|=0x01;
      FD 9AD8      SBI	0x1B,0
(0091) DDRA&=0xfe;
      FE B38A      IN	R24,0x1A
      FF 7F8E      ANDI	R24,0xFE
     100 BB8A      OUT	0x1A,R24
(0092) delay_18B20(75);
     101 E40B      LDI	R16,0x4B
     102 E010      LDI	R17,0
     103 DFE9      RCALL	_delay_18B20
(0093) ack=PINA;
     104 B349      IN	R20,0x19
(0094) ack&=0x01;
     105 7041      ANDI	R20,1
(0095) delay_18B20(500);
     106 EF04      LDI	R16,0xF4
     107 E011      LDI	R17,1
     108 DFE4      RCALL	_delay_18B20
(0096) return ack;
     109 2F04      MOV	R16,R20
     10A 9149      LD	R20,Y+
     10B 9508      RET
_ds1820rd:
  byte                 --> R20
  temp                 --> R10
  i                    --> R22
     10C 940E 02AA CALL	push_xgsetF00C
(0097)  } 
(0098) 
(0099) unsigned char ds1820rd()/*读数据*/
(0100) { 
(0101) unsigned char i,byte,temp;
(0102)   byte=0x00;
     10E 2744      CLR	R20
(0103)   for (i=0;i<8;i++)
     10F 2766      CLR	R22
     110 C01F      RJMP	0x0130
(0104)  {  
(0105)    DDRA|=0x01;
     111 9AD0      SBI	0x1A,0
(0106)    PORTA&=0xfe;//给脉冲信号
     112 B38B      IN	R24,0x1B
     113 7F8E      ANDI	R24,0xFE
     114 BB8B      OUT	0x1B,R24
(0107)    delay_18B20(3); 
     115 E003      LDI	R16,3
     116 E010      LDI	R17,0
     117 DFD5      RCALL	_delay_18B20
(0108)    PORTA|=0x01;
     118 9AD8      SBI	0x1B,0
(0109)    DDRA&=0xfe;
     119 B38A      IN	R24,0x1A
     11A 7F8E      ANDI	R24,0xFE
     11B BB8A      OUT	0x1A,R24
(0110)    delay_18B20(10);
     11C E00A      LDI	R16,0xA
     11D E010      LDI	R17,0
     11E DFCE      RCALL	_delay_18B20
(0111)    temp=(PINA&0x01);
     11F B389      IN	R24,0x19
     120 7081      ANDI	R24,1
     121 2EA8      MOV	R10,R24
(0112)    if(temp!=0x00)
     122 2388      TST	R24
     123 F009      BEQ	0x0125
(0113)       byte|=0x80;
     124 6840      ORI	R20,0x80
(0114)    if(i<7)
     125 3067      CPI	R22,7
     126 F408      BCC	0x0128
(0115)       byte=byte>>1;
     127 9546      LSR	R20
(0116)    delay_18B20(100);
     128 E604      LDI	R16,0x64
     129 E010      LDI	R17,0
     12A DFC2      RCALL	_delay_18B20
(0117)    DDRA|=0x01;
     12B 9AD0      SBI	0x1A,0
(0118)    delay_18B20(5);
     12C E005      LDI	R16,5
     12D E010      LDI	R17,0
     12E DFBE      RCALL	_delay_18B20
     12F 9563      INC	R22
     130 3068      CPI	R22,0x8
     131 F2F8      BCS	0x0111
(0119)    }
(0120)    return byte;
     132 2F04      MOV	R16,R20
     133 940C 02B1 JMP	pop_xgsetF00C
_ds1820wr:
  i                    --> R22
  j                    --> R10
  wdata                --> R20
     135 940E 02AA CALL	push_xgsetF00C
     137 2F40      MOV	R20,R16
(0121) }
(0122) 
(0123) void ds1820wr(uchar wdata)/*写数据*/
(0124)   {
(0125)      unsigned char i,j;
(0126) 	  DDRA|=0x01;
     138 9AD0      SBI	0x1A,0
(0127) 	  for (j=0;j<=7;j++)
     139 24AA      CLR	R10
     13A C01B      RJMP	0x0156
(0128)    { 
(0129)     i=wdata&0x01;
     13B 2F64      MOV	R22,R20
     13C 7061      ANDI	R22,1
(0130) 	if(i==0x01)
     13D 3061      CPI	R22,1
     13E F459      BNE	0x014A
(0131) 	  {
(0132) 	  PORTA&=0xfe;
     13F B38B      IN	R24,0x1B
     140 7F8E      ANDI	R24,0xFE
     141 BB8B      OUT	0x1B,R24
(0133) 	  delay_18B20(10);
     142 E00A      LDI	R16,0xA
     143 E010      LDI	R17,0
     144 DFA8      RCALL	_delay_18B20
(0134) 	  PORTA|=0x01;
     145 9AD8      SBI	0x1B,0
(0135) 	   delay_18B20(100);
     146 E604      LDI	R16,0x64
     147 E010      LDI	R17,0
     148 DFA4      RCALL	_delay_18B20

⌨️ 快捷键说明

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