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

📄 eeprom开机记忆存储实验.lst

📁 EEPROM开机记忆存储实验
💻 LST
📖 第 1 页 / 共 4 页
字号:
__text_start:
__start:
    0065 EFCF      LDI	R28,0xFF
    0066 E1D0      LDI	R29,0x10
    0067 BFCD      OUT	0x3D,R28
    0068 BFDE      OUT	0x3E,R29
    0069 51C0      SUBI	R28,0x10
    006A 40D0      SBCI	R29,0
    006B EA0A      LDI	R16,0xAA
    006C 8308      STD	Y+0,R16
    006D 2400      CLR	R0
    006E E0E2      LDI	R30,2
    006F E0F1      LDI	R31,1
    0070 E011      LDI	R17,1
    0071 30E6      CPI	R30,6
    0072 07F1      CPC	R31,R17
    0073 F011      BEQ	0x0076
    0074 9201      ST	R0,Z+
    0075 CFFB      RJMP	0x0071
    0076 8300      STD	Z+0,R16
    0077 ECE7      LDI	R30,0xC7
    0078 E0F0      LDI	R31,0
    0079 E0A0      LDI	R26,0
    007A E0B1      LDI	R27,1
    007B E010      LDI	R17,0
    007C 3CE9      CPI	R30,0xC9
    007D 07F1      CPC	R31,R17
    007E F021      BEQ	0x0083
    007F 95C8      LPM
    0080 9631      ADIW	R30,1
    0081 920D      ST	R0,X+
    0082 CFF9      RJMP	0x007C
    0083 940E03B7  CALL	_main
_exit:
    0085 CFFF      RJMP	_exit
FILE: H:\MEGA128开发板\TS8900-M128\EEPROM开机记忆存储实验\EEPROM开机记忆存储实验\delay.c
(0001) /************************************************
(0002) 文件:delay.c
(0003) 用途:延时函数
(0004) 注意:系统时钟8M
(0005) ************************************************/
(0006) 
(0007) void delay_1us(void)                 //1us延时函数
(0008)   {
(0009)    asm("nop");
_delay_1us:
    0086 0000      NOP
    0087 9508      RET
_delay_nus:
  i                    --> R20
  n                    --> R22
    0088 940E03FD  CALL	push_gset2
    008A 01B8      MOVW	R22,R16
(0010)   }
(0011) 
(0012) void delay_nus(unsigned int n)       //N us延时函数
(0013)   {
(0014)    unsigned int i=0;
    008B 2744      CLR	R20
    008C 2755      CLR	R21
(0015)    for (i=0;i<n;i++)
    008D C003      RJMP	0x0091
(0016)    delay_1us();
    008E DFF7      RCALL	_delay_1us
    008F 5F4F      SUBI	R20,0xFF
    0090 4F5F      SBCI	R21,0xFF
    0091 1746      CP	R20,R22
    0092 0757      CPC	R21,R23
    0093 F3D0      BCS	0x008E
    0094 940E03F4  CALL	pop_gset2
    0096 9508      RET
(0017)   }
(0018)   
(0019) void delay_1ms(void)                 //1ms延时函数
(0020)   {
(0021)    unsigned int i;
(0022)    for (i=0;i<1140;i++);
_delay_1ms:
  i                    --> R16
    0097 2700      CLR	R16
    0098 2711      CLR	R17
    0099 C002      RJMP	0x009C
    009A 5F0F      SUBI	R16,0xFF
    009B 4F1F      SBCI	R17,0xFF
    009C 3704      CPI	R16,0x74
    009D E0E4      LDI	R30,4
    009E 071E      CPC	R17,R30
    009F F3D0      BCS	0x009A
    00A0 9508      RET
_delay_nms:
  i                    --> R20
  n                    --> R22
    00A1 940E03FD  CALL	push_gset2
    00A3 01B8      MOVW	R22,R16
(0023)   }
(0024)   
(0025) void delay_nms(unsigned int n)       //N ms延时函数
(0026)   {
(0027)    unsigned int i=0;
    00A4 2744      CLR	R20
    00A5 2755      CLR	R21
(0028)    for (i=0;i<n;i++)
    00A6 C003      RJMP	0x00AA
(0029)    delay_1ms();
    00A7 DFEF      RCALL	_delay_1ms
    00A8 5F4F      SUBI	R20,0xFF
    00A9 4F5F      SBCI	R21,0xFF
    00AA 1746      CP	R20,R22
    00AB 0757      CPC	R21,R23
    00AC F3D0      BCS	0x00A7
    00AD 940E03F4  CALL	pop_gset2
    00AF 9508      RET
FILE: H:\MEGA128开发板\TS8900-M128\EEPROM开机记忆存储实验\EEPROM开机记忆存储实验\hc595.c
(0001) /************************************************
(0002) 文件:hc595.c
(0003) 用途:
(0004) 注意:内部8M晶振
(0005) ************************************************/
(0006) #include "config.h"
(0007) const unsigned char Seg7_Data[]={0x3F,0x06,0x5B,0x4F,0x66,             //0,1,2,3,4
(0008)                                  0x6D,0x7D,0x07,0x7F,0x6F,             //5,6,7,8,9
(0009) 						         0x77,0x7C,0x39,0x5E,0x79,0x71,0x00};  //a,b,c,d,e,f
(0010) volatile unsigned char Seg7_Led_Buf[4],point=0,point_pos=0;//point是小数点标志1代表有小数点point_pos表示小数点位置
(0011) /*************************************************************************
(0012) ** 函数名称:HC595初始化
(0013) ** 功能描述:
(0014) ** 输 入:
(0015) ** 输出	 :
(0016) ** 全局变量:
(0017) ** 调用模块:
(0018) ** 说明:
(0019) ** 注意:
(0020) **************************************************************************/
(0021) void HC_595_init(void)
(0022) {
(0023)  OE_DDR |= (1<<OE);
_HC_595_init:
    00B0 9AA7      SBI	0x14,7
(0024)  OE_PORT &= (1<<OE);
    00B1 B385      IN	R24,0x15
    00B2 7880      ANDI	R24,0x80
    00B3 BB85      OUT	0x15,R24
(0025)  PORTB = 0x0F;
    00B4 E08F      LDI	R24,0xF
    00B5 BB88      OUT	0x18,R24
(0026)  spi_init();
    00B6 940E03C9  CALL	_spi_init
(0027)  Seg7_Led_Buf[0]=16;
    00B8 E180      LDI	R24,0x10
    00B9 93800102  STS	Seg7_Led_Buf,R24
(0028)  Seg7_Led_Buf[1]=16;
    00BB 93800103  STS	Seg7_Led_Buf+1,R24
(0029)  Seg7_Led_Buf[2]=16;
    00BD 93800104  STS	Seg7_Led_Buf+2,R24
(0030)  Seg7_Led_Buf[3]=16;
    00BF 93800105  STS	Seg7_Led_Buf+3,R24
    00C1 9508      RET
_HC_595_OUT:
  data                 --> R20
    00C2 940E03FF  CALL	push_gset1
    00C4 2F40      MOV	R20,R16
(0031) }
(0032) /*************************************************************************
(0033) ** 函数名称:HC595送数据
(0034) ** 功能描述:
(0035) ** 输 入:
(0036) ** 输出	 :
(0037) ** 全局变量:
(0038) ** 调用模块: 
(0039) ** 说明:
(0040) ** 注意:
(0041) **************************************************************************/
(0042) void HC_595_OUT(unsigned char data)
(0043) {
(0044)  	 SS_L();
    00C5 98C0      CBI	0x18,0
(0045) 	 SPI_MasterTransmit(data);
    00C6 2F04      MOV	R16,R20
    00C7 940E03CF  CALL	_SPI_MasterTransmit
(0046)  	 SS_H();
    00C9 9AC0      SBI	0x18,0
    00CA 940E0402  CALL	pop_gset1
    00CC 9508      RET
(0047) }
(0048) /*************************************************************************
(0049) ** 函数名称:HC595刷新显示
(0050) ** 功能描述:
(0051) ** 输 入:
(0052) ** 输出	 :
(0053) ** 全局变量:
(0054) ** 调用模块: 
(0055) ** 说明:
(0056) ** 注意:
(0057) **************************************************************************/
(0058) void Seg7_Led_Update(void)
(0059) {
(0060)  HC_595_OUT(Seg7_Data[Seg7_Led_Buf[0]]); 
_Seg7_Led_Update:
    00CD E88C      LDI	R24,0x8C
    00CE E090      LDI	R25,0
    00CF 91E00102  LDS	R30,Seg7_Led_Buf
    00D1 27FF      CLR	R31
    00D2 0FE8      ADD	R30,R24
    00D3 1FF9      ADC	R31,R25
    00D4 9104      LPM	R16,0(Z)
    00D5 DFEC      RCALL	_HC_595_OUT
(0061)  Seg7_Bit0_En(); 
    00D6 9ABC      SBI	0x17,4
    00D7 9AC4      SBI	0x18,4
(0062)  delay_nus(60); 
    00D8 E30C      LDI	R16,0x3C
    00D9 E010      LDI	R17,0
    00DA 940E0088  CALL	_delay_nus
(0063)  Seg7_Bit0_Dis();
    00DC 9ABC      SBI	0x17,4
    00DD 98C4      CBI	0x18,4
(0064)  
(0065)  HC_595_OUT(Seg7_Data[Seg7_Led_Buf[1]]);
    00DE E88C      LDI	R24,0x8C
    00DF E090      LDI	R25,0
    00E0 91E00103  LDS	R30,Seg7_Led_Buf+1
    00E2 27FF      CLR	R31
    00E3 0FE8      ADD	R30,R24
    00E4 1FF9      ADC	R31,R25
    00E5 9104      LPM	R16,0(Z)
    00E6 DFDB      RCALL	_HC_595_OUT
(0066)  if((point==1)&&(point_pos==1))
    00E7 91800100  LDS	R24,point
    00E9 3081      CPI	R24,1
    00EA F471      BNE	0x00F9
    00EB 91800101  LDS	R24,point_pos
    00ED 3081      CPI	R24,1
    00EE F451      BNE	0x00F9
(0067)  HC_595_OUT((Seg7_Data[Seg7_Led_Buf[1]])|(1<<dp));
    00EF E88C      LDI	R24,0x8C
    00F0 E090      LDI	R25,0
    00F1 91E00103  LDS	R30,Seg7_Led_Buf+1
    00F3 27FF      CLR	R31
    00F4 0FE8      ADD	R30,R24
    00F5 1FF9      ADC	R31,R25
    00F6 9104      LPM	R16,0(Z)
    00F7 6800      ORI	R16,0x80
    00F8 DFC9      RCALL	_HC_595_OUT
(0068)  Seg7_Bit1_En();
    00F9 9ABD      SBI	0x17,5
    00FA 9AC5      SBI	0x18,5
(0069)  delay_nus(60);
    00FB E30C      LDI	R16,0x3C
    00FC E010      LDI	R17,0
    00FD 940E0088  CALL	_delay_nus
(0070)  Seg7_Bit1_Dis();
    00FF 9ABD      SBI	0x17,5
    0100 98C5      CBI	0x18,5
(0071)  
(0072)  HC_595_OUT(Seg7_Data[Seg7_Led_Buf[2]]); 
    0101 E88C      LDI	R24,0x8C
    0102 E090      LDI	R25,0
    0103 91E00104  LDS	R30,Seg7_Led_Buf+2
    0105 27FF      CLR	R31
    0106 0FE8      ADD	R30,R24
    0107 1FF9      ADC	R31,R25
    0108 9104      LPM	R16,0(Z)
    0109 DFB8      RCALL	_HC_595_OUT
(0073)  if((point==1)&&(point_pos==2))
    010A 91800100  LDS	R24,point
    010C 3081      CPI	R24,1
    010D F471      BNE	0x011C
    010E 91800101  LDS	R24,point_pos
    0110 3082      CPI	R24,2
    0111 F451      BNE	0x011C
(0074)  HC_595_OUT((Seg7_Data[Seg7_Led_Buf[2]])|(1<<dp));
    0112 E88C      LDI	R24,0x8C
    0113 E090      LDI	R25,0
    0114 91E00104  LDS	R30,Seg7_Led_Buf+2
    0116 27FF      CLR	R31
    0117 0FE8      ADD	R30,R24
    0118 1FF9      ADC	R31,R25
    0119 9104      LPM	R16,0(Z)
    011A 6800      ORI	R16,0x80
    011B DFA6      RCALL	_HC_595_OUT
(0075)  Seg7_Bit2_En();
    011C 9ABE      SBI	0x17,6
    011D 9AC6      SBI	0x18,6
(0076)  delay_nus(60);
    011E E30C      LDI	R16,0x3C
    011F E010      LDI	R17,0
    0120 940E0088  CALL	_delay_nus
(0077)  Seg7_Bit2_Dis();
    0122 9ABE      SBI	0x17,6
    0123 98C6      CBI	0x18,6
(0078)  
(0079)  HC_595_OUT(Seg7_Data[Seg7_Led_Buf[3]]);
    0124 E88C      LDI	R24,0x8C
    0125 E090      LDI	R25,0
    0126 91E00105  LDS	R30,Seg7_Led_Buf+3
    0128 27FF      CLR	R31
    0129 0FE8      ADD	R30,R24
    012A 1FF9      ADC	R31,R25
    012B 9104      LPM	R16,0(Z)
    012C DF95      RCALL	_HC_595_OUT
(0080)  if((point==1)&&(point_pos==3))
    012D 91800100  LDS	R24,point
    012F 3081      CPI	R24,1
    0130 F471      BNE	0x013F
    0131 91800101  LDS	R24,point_pos
    0133 3083      CPI	R24,3
    0134 F451      BNE	0x013F
(0081)  HC_595_OUT((Seg7_Data[Seg7_Led_Buf[3]])|(1<<dp));
    0135 E88C      LDI	R24,0x8C
    0136 E090      LDI	R25,0
    0137 91E00105  LDS	R30,Seg7_Led_Buf+3
    0139 27FF      CLR	R31
    013A 0FE8      ADD	R30,R24
    013B 1FF9      ADC	R31,R25
    013C 9104      LPM	R16,0(Z)
    013D 6800      ORI	R16,0x80
    013E DF83      RCALL	_HC_595_OUT
(0082)  Seg7_Bit3_En();
    013F 9ABF      SBI	0x17,7
    0140 9AC7      SBI	0x18,7
(0083)  delay_nus(60);
    0141 E30C      LDI	R16,0x3C
    0142 E010      LDI	R17,0
    0143 940E0088  CALL	_delay_nus
(0084)  Seg7_Bit3_Dis();
    0145 9ABF      SBI	0x17,7
    0146 98C7      CBI	0x18,7
    0147 9508      RET
_Seg7_Led_display:
  data                 --> R20
    0148 940E03FF  CALL	push_gset1
    014A 01A8      MOVW	R20,R16
(0085) }
(0086) /*************************************************************************
(0087) ** 函数名称:Hc595显示整形数据
(0088) ** 功能描述:
(0089) ** 输 入:0~9999
(0090) ** 输出	 :
(0091) ** 全局变量:
(0092) ** 调用模块: 
(0093) ** 说明:
(0094) ** 注意:
(0095) **************************************************************************/
(0096) void Seg7_Led_display(unsigned int data)
(0097) {
(0098)  if(data>9999) //错误处理,超出显示范围则全亮
    014B E08F      LDI	R24,0xF
    014C E297      LDI	R25,0x27
    014D 1784      CP	R24,R20
    014E 0795      CPC	R25,R21
    014F F430      BCC	0x0156
(0099)  	{
(0100) 	 HC_595_OUT(0xFF);
    0150 EF0F      LDI	R16,0xFF
    0151 DF70      RCALL	_HC_595_OUT
(0101) 	 Seg7_Bitselect_PORT|=((1<<Seg7_Bit0)|(1<<Seg7_Bit1)|(1<<Seg7_Bit2)|(1<<Seg7_Bit3));
    0152 B388      IN	R24,0x18
    0153 6F80      ORI	R24,0xF0
    0154 BB88      OUT	0x18,R24
(0102) 	}
    0155 C07F      RJMP	0x01D5
(0103)  else if(data>999)
    0156 EE87      LDI	R24,0xE7
    0157 E093      LDI	R25,3
    0158 1784      CP	R24,R20
    0159 0795      CPC	R25,R21
    015A F530      BCC	0x0181
(0104)  	{
(0105) 	 Seg7_Led_Buf[3]=data/1000;
    015B EE28      LDI	R18,0xE8
    015C E033      LDI	R19,3
    015D 018A      MOVW	R16,R20
    015E 940E03DA  CALL	div16u
    0160 93000105  STS	Seg7_Led_Buf+3,R16
(0106)  	 Seg7_Led_Buf[2]=(data%1000)/100;
    0162 EE28      LDI	R18,0xE8
    0163 E033      LDI	R19,3
    0164 018A      MOVW	R16,R20
    0165 940E03D8  CALL	mod16u
    0167 E624      LDI	R18,0x64
    0168 E030      LDI	R19,0
    0169 940E03DA  CALL	div16u
    016B 93000104  STS	Seg7_Led_Buf+2,R16
(0107)  	 Seg7_Led_Buf[1]=(data%100)/10;
    016D E624      LDI	R18,0x64
    016E E030      LDI	R19,0
    016F 018A      MOVW	R16,R20
    0170 940E03D8  CALL	mod16u
    0172 E02A      LDI	R18,0xA
    0173 E030      LDI	R19,0
    0174 940E03DA  CALL	div16u
    0176 93000103  STS	Seg7_Led_Buf+1,R16
(0108)  	 Seg7_Led_Buf[0]=data%10;
    0178 E02A      LDI	R18,0xA
    0179 E030      LDI	R19,0
    017A 018A      MOVW	R16,R20
    017B 940E03D8  CALL	mod16u
    017D 93000102  STS	Seg7_Led_Buf,R16
(0109) 	 Seg7_Led_Update();
    017F DF4D      RCALL	_Seg7_Led_Update
(0110) 	}
    0180 C054      RJMP	0x01D5

⌨️ 快捷键说明

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