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

📄 smg.lst

📁 AVR单片机开发版资料测试程序里的源程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
  i                    --> R20
  pdata                --> R22
    00E4 940E01A2  CALL	push_gset2
    00E6 01B8      MOVW	R22,R16
(0043) /*******************************************
(0044) 函数名称: All_smg_display
(0045) 功    能: 6个数码管显示指定的内容
(0046) 参    数: *pdata--显示内容数组地址
(0047) 返回值  : 无
(0048) /********************************************/
(0049) void All_smg_display(uchar *pdata)
(0050) {
(0051)  uchar i;
(0052)  for(i=0;i<6;i++)
    00E7 2744      CLR	R20
    00E8 C00C      RJMP	0x00F5
(0053)  	{
(0054) 	 One_smg_display(pdata[i],i+1);
    00E9 2F24      MOV	R18,R20
    00EA 5F2F      SUBI	R18,0xFF
    00EB 2FE4      MOV	R30,R20
    00EC 27FF      CLR	R31
    00ED 0FE6      ADD	R30,R22
    00EE 1FF7      ADC	R31,R23
    00EF 8100      LDD	R16,0+Z
    00F0 DFC7      RCALL	_One_smg_display
(0055) 	 Delayms(1);
    00F1 E001      LDI	R16,1
    00F2 E010      LDI	R17,0
    00F3 DF88      RCALL	_Delayms
    00F4 9543      INC	R20
    00F5 3046      CPI	R20,6
    00F6 F390      BCS	0x00E9
(0056) 	}
(0057) }
    00F7 940E01AA  CALL	pop_gset2
    00F9 9508      RET
_Cycle_smg_display:
  i                    --> R20
  j                    --> R10
  pdata                --> R22
    00FA 940E01A6  CALL	push_gset3
    00FC 01B8      MOVW	R22,R16
(0058) /*******************************************
(0059) 函数名称: Cycle_smg_display
(0060) 功    能: 6个数码管从右向左循环滚动显示指定的内容(循环一次)
(0061) 参    数: *pdata--显示内容数组地址
(0062) 返回值  : 无
(0063) /********************************************/
(0064) void Cycle_smg_display(uchar *pdata)
(0065) {
(0066)  uchar i,j;
(0067)  for(i=0;i<240;i++)			 //共滚动6次,每次内容显示40个循环
    00FD 2744      CLR	R20
    00FE C02B      RJMP	0x012A
(0068)  { 
(0069)   for(j=0;j<6;j++)			 //扫描6个数码管
    00FF 24AA      CLR	R10
    0100 C025      RJMP	0x0126
(0070)  	{
(0071) 	 One_smg_display(pdata[(i/40+j)%6],j+1);//显示
    0101 2D2A      MOV	R18,R10
    0102 5F2F      SUBI	R18,0xFF
    0103 E288      LDI	R24,0x28
    0104 E090      LDI	R25,0
    0105 2F04      MOV	R16,R20
    0106 2711      CLR	R17
    0107 932F      PUSH	R18
    0108 933F      PUSH	R19
    0109 019C      MOVW	R18,R24
    010A 940E0160  CALL	div16s
    010C 0118      MOVW	R2,R16
    010D 913F      POP	R19
    010E 912F      POP	R18
    010F 2C4A      MOV	R4,R10
    0110 2455      CLR	R5
    0111 0C24      ADD	R2,R4
    0112 1C35      ADC	R3,R5
    0113 E086      LDI	R24,6
    0114 E090      LDI	R25,0
    0115 932F      PUSH	R18
    0116 933F      PUSH	R19
    0117 019C      MOVW	R18,R24
    0118 0181      MOVW	R16,R2
    0119 940E015E  CALL	mod16s
    011B 01F8      MOVW	R30,R16
    011C 913F      POP	R19
    011D 912F      POP	R18
    011E 0FE6      ADD	R30,R22
    011F 1FF7      ADC	R31,R23
    0120 8100      LDD	R16,0+Z
    0121 DF96      RCALL	_One_smg_display
(0072) 	 Delayus(2000);			 //调整显示时间和亮度(时间越长亮度越高,但是太长数码管就闪了)
    0122 ED00      LDI	R16,0xD0
    0123 E017      LDI	R17,7
    0124 DF3F      RCALL	_Delayus
    0125 94A3      INC	R10
    0126 2D8A      MOV	R24,R10
    0127 3086      CPI	R24,6
    0128 F2C0      BCS	0x0101
    0129 9543      INC	R20
    012A 3F40      CPI	R20,0xF0
    012B F298      BCS	0x00FF
(0073) 	}
(0074)  }
(0075) }
    012C 940E01AD  CALL	pop_gset3
    012E 9508      RET
_main:
  data                 --> Y+0
    012F 9726      SBIW	R28,6
(0076) /*******************************************
(0077) 函数名称: main
(0078) 功    能: 6个数码管循环滚动显示指定的内容
(0079) 参    数: 无
(0080) 返回值  : 无
(0081) /********************************************/
(0082) void main(void)
(0083) {	 
(0084) 	 uchar data[6]={1,2,3,4,5,6};//六个数码管滚动显示1,2,3,4,5,6	 
    0130 E880      LDI	R24,0x80
    0131 E090      LDI	R25,0
    0132 01FE      MOVW	R30,R28
    0133 E006      LDI	R16,6
    0134 E010      LDI	R17,0
    0135 93FA      ST	R31,-Y
    0136 93EA      ST	R30,-Y
    0137 939A      ST	R25,-Y
    0138 938A      ST	R24,-Y
    0139 940E01B0  CALL	asgncblk
(0085) 	 Board_init( );	   //初始化开发板
    013B DF56      RCALL	_Board_init
    013C C002      RJMP	0x013F
(0086) 	 while(1)
(0087) 	 {
(0088) 	  Cycle_smg_display(data);
    013D 018E      MOVW	R16,R28
    013E DFBB      RCALL	_Cycle_smg_display
    013F CFFD      RJMP	0x013D
(0089) 	 }
(0090) }FILE: <library>
    0140 9626      ADIW	R28,6
    0141 9508      RET
mod16u:
    0142 9468      BSET	6
    0143 C001      RJMP	xdiv16u
div16u:
    0144 94E8      BCLR	6
xdiv16u:
    0145 92EA      ST	R14,-Y
    0146 92FA      ST	R15,-Y
    0147 938A      ST	R24,-Y
    0148 24EE      CLR	R14
    0149 24FF      CLR	R15
    014A E180      LDI	R24,0x10
    014B 0F00      LSL	R16
    014C 1F11      ROL	R17
    014D 1CEE      ROL	R14
    014E 1CFF      ROL	R15
    014F 16E2      CP	R14,R18
    0150 06F3      CPC	R15,R19
    0151 F018      BCS	0x0155
    0152 1AE2      SUB	R14,R18
    0153 0AF3      SBC	R15,R19
    0154 9503      INC	R16
    0155 958A      DEC	R24
    0156 F7A1      BNE	0x014B
    0157 F416      BRTC	0x015A
    0158 2D0E      MOV	R16,R14
    0159 2D1F      MOV	R17,R15
    015A 9189      LD	R24,Y+
    015B 90F9      LD	R15,Y+
    015C 90E9      LD	R14,Y+
    015D 9508      RET
mod16s:
    015E 9468      BSET	6
    015F C001      RJMP	0x0161
div16s:
    0160 94E8      BCLR	6
    0161 92DA      ST	R13,-Y
    0162 2ED1      MOV	R13,R17
    0163 26D3      EOR	R13,R19
    0164 FF17      SBRS	R17,7
    0165 C004      RJMP	0x016A
    0166 9510      COM	R17
    0167 9500      COM	R16
    0168 5F0F      SUBI	R16,0xFF
    0169 4F1F      SBCI	R17,0xFF
    016A FF37      SBRS	R19,7
    016B C004      RJMP	0x0170
    016C 9530      COM	R19
    016D 9520      COM	R18
    016E 5F2F      SUBI	R18,0xFF
    016F 4F3F      SBCI	R19,0xFF
    0170 940E0145  CALL	xdiv16u
    0172 F036      BRTS	0x0179
    0173 FED7      SBRS	R13,7
    0174 C004      RJMP	0x0179
    0175 9510      COM	R17
    0176 9500      COM	R16
    0177 5F0F      SUBI	R16,0xFF
    0178 4F1F      SBCI	R17,0xFF
    0179 90D9      LD	R13,Y+
    017A 9508      RET
empy16s:
    017B 920A      ST	R0,-Y
    017C 921A      ST	R1,-Y
    017D 938A      ST	R24,-Y
    017E 939A      ST	R25,-Y
    017F 9F02      MUL	R16,R18
    0180 01C0      MOVW	R24,R0
    0181 9F12      MUL	R17,R18
    0182 0D90      ADD	R25,R0
    0183 9F03      MUL	R16,R19
    0184 0D90      ADD	R25,R0
    0185 018C      MOVW	R16,R24
    0186 9199      LD	R25,Y+
    0187 9189      LD	R24,Y+
    0188 9019      LD	R1,Y+
    0189 9009      LD	R0,Y+
    018A 9508      RET
push_gset1:
    018B 935A      ST	R21,-Y
    018C 934A      ST	R20,-Y
    018D 9508      RET
pop_gset1:
    018E E0E1      LDI	R30,1
pop:
    018F 9149      LD	R20,Y+
    0190 9159      LD	R21,Y+
    0191 FDE0      SBRC	R30,0
    0192 9508      RET
    0193 9169      LD	R22,Y+
    0194 9179      LD	R23,Y+
    0195 FDE1      SBRC	R30,1
    0196 9508      RET
    0197 90A9      LD	R10,Y+
    0198 90B9      LD	R11,Y+
    0199 FDE2      SBRC	R30,2
    019A 9508      RET
    019B 90C9      LD	R12,Y+
    019C 90D9      LD	R13,Y+
    019D FDE3      SBRC	R30,3
    019E 9508      RET
    019F 90E9      LD	R14,Y+
    01A0 90F9      LD	R15,Y+
    01A1 9508      RET
push_gset2:
    01A2 937A      ST	R23,-Y
    01A3 936A      ST	R22,-Y
    01A4 940C018B  JMP	push_gset1
push_gset3:
    01A6 92BA      ST	R11,-Y
    01A7 92AA      ST	R10,-Y
    01A8 940C01A2  JMP	push_gset2
pop_gset2:
    01AA E0E2      LDI	R30,2
    01AB 940C018F  JMP	pop
pop_gset3:
    01AD E0E4      LDI	R30,4
    01AE 940C018F  JMP	pop
asgncblk:
    01B0 93AA      ST	R26,-Y
    01B1 93BA      ST	R27,-Y
    01B2 93EA      ST	R30,-Y
    01B3 93FA      ST	R31,-Y
    01B4 920A      ST	R0,-Y
    01B5 81AF      LDD	R26,7+Y
    01B6 85B8      LDD	R27,8+Y
    01B7 81ED      LDD	R30,5+Y
    01B8 81FE      LDD	R31,6+Y
    01B9 3000      CPI	R16,0
    01BA 0701      CPC	R16,R17
    01BB F031      BEQ	0x01C2
    01BC 95C8      LPM
    01BD 920D      ST	R0,X+
    01BE 9631      ADIW	R30,1
    01BF 5001      SUBI	R16,1
    01C0 4010      SBCI	R17,0
    01C1 CFF7      RJMP	0x01B9
    01C2 9009      LD	R0,Y+
    01C3 91F9      LD	R31,Y+
    01C4 91E9      LD	R30,Y+
    01C5 91B9      LD	R27,Y+
    01C6 91A9      LD	R26,Y+
    01C7 9624      ADIW	R28,4
    01C8 9508      RET
lsl8:
    01C9 2311      TST	R17
    01CA F019      BEQ	0x01CE
    01CB 0F00      LSL	R16
    01CC 951A      DEC	R17
    01CD CFFB      RJMP	lsl8
    01CE 9508      RET

⌨️ 快捷键说明

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