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

📄 1302.lst

📁 mega8515通过的DS1302芯片使用程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
__start:
__text_start:
    0018 E5CF      LDI	R28,0x5F
    0019 E0D2      LDI	R29,2
    001A BFCD      OUT	0x3D,R28
    001B BFDE      OUT	0x3E,R29
    001C 51C0      SUBI	R28,0x10
    001D 40D0      SBCI	R29,0
    001E EA0A      LDI	R16,0xAA
    001F 8308      STD	Y+0,R16
    0020 2400      CLR	R0
    0021 E6EE      LDI	R30,0x6E
    0022 E0F0      LDI	R31,0
    0023 E010      LDI	R17,0
    0024 38E0      CPI	R30,0x80
    0025 07F1      CPC	R31,R17
    0026 F011      BEQ	0x0029
    0027 9201      ST	R0,Z+
    0028 CFFB      RJMP	0x0024
    0029 8300      STD	Z+0,R16
    002A E2E2      LDI	R30,0x22
    002B E0F0      LDI	R31,0
    002C E6A0      LDI	R26,0x60
    002D E0B0      LDI	R27,0
    002E E010      LDI	R17,0
    002F 33E0      CPI	R30,0x30
    0030 07F1      CPC	R31,R17
    0031 F021      BEQ	0x0036
    0032 95C8      LPM
    0033 9631      ADIW	R30,1
    0034 920D      ST	R0,X+
    0035 CFF9      RJMP	0x002F
    0036 D092      RCALL	_main
_exit:
    0037 CFFF      RJMP	_exit
_update_display_dp:
  byte_counter         --> R20
  bit_count            --> R22
  temp_i               --> R10
  k                    --> R12
    0038 D19E      RCALL	push_gset4
    0039 0168      MOVW	R12,R16
FILE: D:\AVR实验\DS1302时间芯片\m4094.c
(0001) /*4094显示模式
(0002) 基于实验板接线方式
(0003) */
(0004) #include "d4094.h"
(0005) 
(0006) 
(0007) uchar table2[10]={0x81,0xB7,0xC2,0x92,0xB4,0x98,0x88,0xB3,0x80,0x90};
(0008) uchar led_buffer[4]={0,3};
(0009) 
(0010) void update_display_dp(uint k)
(0011) {
(0012) 	 uchar bit_count=0;
    003A 2766      CLR	R22
(0013) 	 uchar byte_counter=0;
    003B 2744      CLR	R20
(0014)      uchar temp_i=0;
    003C 24AA      CLR	R10
(0015) 	 
(0016)      led_buffer[0]=k/1000;
    003D EE28      LDI	R18,0xE8
    003E E033      LDI	R19,3
    003F 0186      MOVW	R16,R12
    0040 D166      RCALL	div16u
    0041 9300006A  STS	led_buffer,R16
(0017)      led_buffer[1]=(k%1000)/100;
    0043 EE28      LDI	R18,0xE8
    0044 E033      LDI	R19,3
    0045 0186      MOVW	R16,R12
    0046 D15E      RCALL	mod16u
    0047 E624      LDI	R18,0x64
    0048 E030      LDI	R19,0
    0049 D15D      RCALL	div16u
    004A 9300006B  STS	led_buffer+1,R16
(0018)      led_buffer[2]=(k%100)/10;
    004C E624      LDI	R18,0x64
    004D E030      LDI	R19,0
    004E 0186      MOVW	R16,R12
    004F D155      RCALL	mod16u
    0050 E02A      LDI	R18,0xA
    0051 E030      LDI	R19,0
    0052 D154      RCALL	div16u
    0053 9300006C  STS	led_buffer+2,R16
(0019)      led_buffer[3]=k%10;
    0055 E02A      LDI	R18,0xA
    0056 E030      LDI	R19,0
    0057 0186      MOVW	R16,R12
    0058 D14C      RCALL	mod16u
    0059 9300006D  STS	led_buffer+3,R16
(0020) 	 
(0021)      CLR_STR_4094;//led_str_off;
    005B 98AE      CBI	0x15,6
(0022)      CLR_CLK_4094;//led_clk_off;
    005C 98AD      CBI	0x15,5
(0023) 	
(0024)      for(byte_counter=0;byte_counter<4;byte_counter++)
    005D C01C      RJMP	0x007A
(0025) 	   {
(0026) 	      bit_count=8;
    005E E068      LDI	R22,0x8
(0027) 	       temp_i=table2[led_buffer[byte_counter]];
    005F E68A      LDI	R24,0x6A
    0060 E090      LDI	R25,0
    0061 2FE4      MOV	R30,R20
    0062 27FF      CLR	R31
    0063 0FE8      ADD	R30,R24
    0064 1FF9      ADC	R31,R25
    0065 81E0      LDD	R30,Z+0
    0066 27FF      CLR	R31
    0067 E680      LDI	R24,0x60
    0068 E090      LDI	R25,0
    0069 0FE8      ADD	R30,R24
    006A 1FF9      ADC	R31,R25
    006B 80A0      LDD	R10,Z+0
    006C C009      RJMP	0x0076
(0028) 
(0029) 	       while(bit_count>0)
(0030) 		      {
(0031) 		      if((temp_i&0x01)==0)
    006D FCA0      SBRC	R10,0
    006E C002      RJMP	0x0071
(0032) 			     {
(0033) 			         CLR_DATA_4094;//led_d_off;
    006F 98AC      CBI	0x15,4
(0034) 			      }
    0070 C001      RJMP	0x0072
(0035) 	        	else
(0036) 		        	{
(0037) 			      SET_DATA_4094;//led_d_on;
    0071 9AAC      SBI	0x15,4
(0038) 			           }
(0039) 		temp_i=(temp_i>>1);
    0072 94A6      LSR	R10
(0040) 		
(0041) 	
(0042) 		SET_CLK_4094;//led_clk_on;
    0073 9AAD      SBI	0x15,5
(0043) 
(0044) 		CLR_CLK_4094;//led_clk_off;
    0074 98AD      CBI	0x15,5
(0045) 
(0046) 		bit_count--;			
    0075 956A      DEC	R22
    0076 2422      CLR	R2
    0077 1626      CP	R2,R22
    0078 F3A0      BCS	0x006D
    0079 9543      INC	R20
    007A 3044      CPI	R20,4
    007B F310      BCS	0x005E
(0047) 		
(0048) 		}
(0049) 	
(0050) 	}
(0051)     SET_STR_4094;
    007C 9AAE      SBI	0x15,6
    007D D155      RCALL	pop_gset4
    007E 9508      RET
_jisuan:
  d                    --> R20
  e                    --> R22
  b_data               --> R16
    007F D15B      RCALL	push_gset2
FILE: D:\AVR实验\DS1302时间芯片\main.c
(0001) #include <iom8515v.h>
(0002) 
(0003) #include "ds1302.h"
(0004) #include "d4094.h"
(0005) 
(0006) 
(0007) uint gewei,shiwei;
(0008) uint sec,min,hour,n1,n2,n3,n4;
(0009) 
(0010) 
(0011) void jisuan(uchar b_data)
(0012) {
(0013)    uchar e,d;
(0014)    e=b_data;
    0080 2F60      MOV	R22,R16
(0015)    d=e;
    0081 2F46      MOV	R20,R22
(0016)    e=e&0x0f;
    0082 706F      ANDI	R22,0xF
(0017)    d=d>>4;
    0083 2F84      MOV	R24,R20
    0084 9582      SWAP	R24
    0085 708F      ANDI	R24,0xF
    0086 2F48      MOV	R20,R24
(0018)    gewei=(e&0x01)+((e>>1)&0x01)*2+((e>>2)&0x01)*4+((e>>3)&0x01)*8;
    0087 2F86      MOV	R24,R22
    0088 9586      LSR	R24
    0089 7081      ANDI	R24,1
    008A E092      LDI	R25,2
    008B 9F98      MUL	R25,R24
    008C 2F86      MOV	R24,R22
    008D 2799      CLR	R25
    008E 7081      ANDI	R24,1
    008F 7090      ANDI	R25,0
    0090 0D80      ADD	R24,R0
    0091 1D91      ADC	R25,R1
    0092 2FE6      MOV	R30,R22
    0093 95E6      LSR	R30
    0094 95E6      LSR	R30
    0095 70E1      ANDI	R30,1
    0096 E0F4      LDI	R31,4
    0097 9FFE      MUL	R31,R30
    0098 0D80      ADD	R24,R0
    0099 1D91      ADC	R25,R1
    009A 2FE6      MOV	R30,R22
    009B 95E6      LSR	R30
    009C 95E6      LSR	R30
    009D 95E6      LSR	R30
    009E 70E1      ANDI	R30,1
    009F E0F8      LDI	R31,0x8
    00A0 9FFE      MUL	R31,R30
    00A1 0D80      ADD	R24,R0
    00A2 1D91      ADC	R25,R1
    00A3 9390007F  STS	gewei+1,R25
    00A5 9380007E  STS	gewei,R24
(0019)    shiwei=(d&0x01)+((d>>1)&0x01)*2+((d>>2)&0x01)*4+((d>>3)&0x01)*8; 
    00A7 2F84      MOV	R24,R20
    00A8 9586      LSR	R24
    00A9 7081      ANDI	R24,1
    00AA E092      LDI	R25,2
    00AB 9F98      MUL	R25,R24
    00AC 2F84      MOV	R24,R20
    00AD 2799      CLR	R25
    00AE 7081      ANDI	R24,1
    00AF 7090      ANDI	R25,0
    00B0 0D80      ADD	R24,R0
    00B1 1D91      ADC	R25,R1
    00B2 2FE4      MOV	R30,R20
    00B3 95E6      LSR	R30
    00B4 95E6      LSR	R30
    00B5 70E1      ANDI	R30,1
    00B6 E0F4      LDI	R31,4
    00B7 9FFE      MUL	R31,R30
    00B8 0D80      ADD	R24,R0
    00B9 1D91      ADC	R25,R1
    00BA 2FE4      MOV	R30,R20
    00BB 95E6      LSR	R30
    00BC 95E6      LSR	R30
    00BD 95E6      LSR	R30
    00BE 70E1      ANDI	R30,1
    00BF E0F8      LDI	R31,0x8
    00C0 9FFE      MUL	R31,R30
    00C1 0D80      ADD	R24,R0
    00C2 1D91      ADC	R25,R1
    00C3 9390007D  STS	shiwei+1,R25
    00C5 9380007C  STS	shiwei,R24
    00C7 D109      RCALL	pop_gset2
    00C8 9508      RET
(0020) 
(0021)    }
(0022) 
(0023) 
(0024) 
(0025) void main()
(0026) {
(0027) 
(0028)   uint num; 
(0029)   DDRC=0xFF;
_main:
  num                  --> R20
    00C9 EF8F      LDI	R24,0xFF
    00CA BB84      OUT	0x14,R24
(0030)   PORTC=0xFF;
    00CB BB85      OUT	0x15,R24
(0031)   WriteSec(0x14);
    00CC E104      LDI	R16,0x14
    00CD E010      LDI	R17,0
    00CE D073      RCALL	_WriteSec
(0032)   WriteMin(0x00);
    00CF 2700      CLR	R16
    00D0 2711      CLR	R17
    00D1 D079      RCALL	_WriteMin
(0033)   WriteHour(0x00);
    00D2 2700      CLR	R16
    00D3 2711      CLR	R17
    00D4 D07F      RCALL	_WriteHour
    00D5 C058      RJMP	0x012E
(0034)   while(1)
(0035) 	{ 
(0036)   
(0037) 	    sec= ReadSec();	
    00D6 D05F      RCALL	_ReadSec
    00D7 9310007B  STS	sec+1,R17
    00D9 9300007A  STS	sec,R16
(0038) 	    min = ReadMin();
    00DB D05E      RCALL	_ReadMin
    00DC 93100079  STS	min+1,R17
    00DE 93000078  STS	min,R16
(0039) 		hour=ReadHour();
    00E0 D05D      RCALL	_ReadHour
    00E1 93100077  STS	hour+1,R17
    00E3 93000076  STS	hour,R16
(0040) 		jisuan(sec);
    00E5 9100007A  LDS	R16,sec
    00E7 DF97      RCALL	_jisuan
(0041) 		n1=gewei;
    00E8 9020007E  LDS	R2,gewei
    00EA 9030007F  LDS	R3,gewei+1
    00EC 92300075  STS	n1+1,R3
    00EE 92200074  STS	n1,R2
(0042) 		n2=shiwei;
    00F0 9020007C  LDS	R2,shiwei
    00F2 9030007D  LDS	R3,shiwei+1
    00F4 92300073  STS	n2+1,R3
    00F6 92200072  STS	n2,R2
(0043) 		jisuan(min);
    00F8 91000078  LDS	R16,min
    00FA DF84      RCALL	_jisuan
(0044) 		n3=gewei;
    00FB 9020007E  LDS	R2,gewei
    00FD 9030007F  LDS	R3,gewei+1
    00FF 92300071  STS	n3+1,R3
    0101 92200070  STS	n3,R2
(0045) 		n4=shiwei;
    0103 9020007C  LDS	R2,shiwei
    0105 9030007D  LDS	R3,shiwei+1
    0107 9230006F  STS	n4+1,R3
    0109 9220006E  STS	n4,R2
(0046) 		num=n4*1000+n3*100+n2*10+n1;
    010B 91200070  LDS	R18,n3
    010D 91300071  LDS	R19,n3+1
    010F E604      LDI	R16,0x64
    0110 E010      LDI	R17,0
    0111 D0AF      RCALL	empy16s
    0112 0118      MOVW	R2,R16
    0113 9120006E  LDS	R18,n4
    0115 9130006F  LDS	R19,n4+1
    0117 EE08      LDI	R16,0xE8
    0118 E013      LDI	R17,3
    0119 D0A7      RCALL	empy16s
    011A 01A8      MOVW	R20,R16
    011B 0D42      ADD	R20,R2
    011C 1D53      ADC	R21,R3
    011D 91200072  LDS	R18,n2
    011F 91300073  LDS	R19,n2+1
    0121 E00A      LDI	R16,0xA
    0122 E010      LDI	R17,0
    0123 D09D      RCALL	empy16s
    0124 0F40      ADD	R20,R16
    0125 1F51      ADC	R21,R17
    0126 90200074  LDS	R2,n1
    0128 90300075  LDS	R3,n1+1
    012A 0D42      ADD	R20,R2
    012B 1D53      ADC	R21,R3

⌨️ 快捷键说明

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