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

📄 ad.lst

📁 M16内部采样并用Max7221-7219显示
💻 LST
📖 第 1 页 / 共 2 页
字号:
     123 9701      SBIW	R24,1
     124 016C      MOVW	R12,R24
(0118)                 }while(number>=1); 
     125 01C5      MOVW	R24,R10
     126 3081      CPI	R24,1
     127 E0E0      LDI	R30,0
     128 079E      CPC	R25,R30
     129 F714      BGE	0x010C
(0119)         } 
     12A 940C 0213 JMP	pop_xgset003C
_SEG_R:
  i                    --> R12
  number               --> R10
     12C 940E 0225 CALL	push_xgset003C
     12E 0158      MOVW	R10,R16
(0120) } 
(0121) //===================================== 
(0122) 
(0123) //=============SEG右四显示数字============== 
(0124) void SEG_R(int number) 
(0125) { 
(0126) int i=8; 
     12F E088      LDI	R24,0x8
     130 E090      LDI	R25,0
     131 016C      MOVW	R12,R24
(0127) 
(0128) SEND(0x05,0x0f); //先清除右四位,右四位黑屏 
     132 E02F      LDI	R18,0xF
     133 E005      LDI	R16,5
     134 DF18      RCALL	_SEND
(0129) SEND(0x06,0x0f);  
     135 E02F      LDI	R18,0xF
     136 E006      LDI	R16,6
     137 DF15      RCALL	_SEND
(0130) SEND(0x07,0x0f);  
     138 E02F      LDI	R18,0xF
     139 E007      LDI	R16,7
     13A DF12      RCALL	_SEND
(0131) SEND(0x08,0x0f); 
     13B E02F      LDI	R18,0xF
     13C E008      LDI	R16,0x8
     13D DF0F      RCALL	_SEND
(0132) 
(0133) if(number>9999)//要显示的数值超过4位,则显示4个H 
     13E E08F      LDI	R24,0xF
     13F E297      LDI	R25,0x27
     140 158A      CP	R24,R10
     141 059B      CPC	R25,R11
     142 F46C      BGE	0x0150
(0134)         { 
(0135)         SEND(0x05,0x0c);  
     143 E02C      LDI	R18,0xC
     144 E005      LDI	R16,5
     145 DF07      RCALL	_SEND
(0136)         SEND(0x06,0x0c);  
     146 E02C      LDI	R18,0xC
     147 E006      LDI	R16,6
     148 DF04      RCALL	_SEND
(0137)         SEND(0x07,0x0c);  
     149 E02C      LDI	R18,0xC
     14A E007      LDI	R16,7
     14B DF01      RCALL	_SEND
(0138)         SEND(0x08,0x0c); 
     14C E02C      LDI	R18,0xC
     14D E008      LDI	R16,0x8
     14E DEFE      RCALL	_SEND
(0139)         } 
     14F C01E      RJMP	0x016E
(0140) else//小于四位可以显示 
(0141)         { 
(0142)         do 
(0143)                 { 
(0144)                 SEND(i,number%10); 
     150 E02A      LDI	R18,0xA
     151 E030      LDI	R19,0
     152 0185      MOVW	R16,R10
     153 940E 01C9 CALL	mod16s
     155 2F20      MOV	R18,R16
     156 2D0C      MOV	R16,R12
     157 DEF5      RCALL	_SEND
(0145)                 number=(number-number%10)/10; 
     158 E02A      LDI	R18,0xA
     159 E030      LDI	R19,0
     15A 0185      MOVW	R16,R10
     15B 940E 01C9 CALL	mod16s
     15D 0118      MOVW	R2,R16
     15E 0185      MOVW	R16,R10
     15F 1902      SUB	R16,R2
     160 0913      SBC	R17,R3
     161 E02A      LDI	R18,0xA
     162 E030      LDI	R19,0
     163 940E 01CD CALL	div16s
     165 0158      MOVW	R10,R16
(0146)                 i--; 
     166 01C6      MOVW	R24,R12
     167 9701      SBIW	R24,1
     168 016C      MOVW	R12,R24
(0147)                 }while(number>=1); 
     169 01C5      MOVW	R24,R10
     16A 3081      CPI	R24,1
     16B E0E0      LDI	R30,0
     16C 079E      CPC	R25,R30
     16D F714      BGE	0x0150
(0148)         } 
     16E 940C 0213 JMP	pop_xgset003C
FILE: D:\MYDOCU~1\MYMCUW~1\AVR\AD\delay.h
(0001) /*-----------------------------------------------------------------------
(0002) 延时函数
(0003) 编译器:ICC-AVR v6.31A 日期: 2005-11-24 20:29:57
(0004) 目标芯片 : M16
(0005) 时钟: 8.0000Mhz
(0006) 作者:archeng504
(0007) -----------------------------------------------------------------------*/
(0008) 
(0009) void delay_1us(void)                 //1us延时函数
(0010)   {
(0011)    asm("nop");
_delay_1us:
     170 0000      NOP
     171 9508      RET
_delay_nus:
  i                    --> R10
  n                    --> R12
     172 940E 0225 CALL	push_xgset003C
     174 0168      MOVW	R12,R16
(0012)   }
(0013) 
(0014) void delay_nus(unsigned int n)       //N us延时函数
(0015)   {
(0016)    unsigned int i=0;
     175 24AA      CLR	R10
     176 24BB      CLR	R11
(0017)    for (i=0;i<n;i++)
     177 C004      RJMP	0x017C
(0018)    delay_1us();
     178 DFF7      RCALL	_delay_1us
     179 01C5      MOVW	R24,R10
     17A 9601      ADIW	R24,1
     17B 015C      MOVW	R10,R24
     17C 14AC      CP	R10,R12
     17D 04BD      CPC	R11,R13
     17E F3C8      BCS	0x0178
     17F 940C 0213 JMP	pop_xgset003C
(0019)   }
(0020)   
(0021) void delay_1ms(void)                 //1ms延时函数
(0022)   {
(0023)    unsigned int i;
(0024)    for (i=0;i<1140;i++);
_delay_1ms:
  i                    --> R16
     181 2700      CLR	R16
     182 2711      CLR	R17
     183 C002      RJMP	0x0186
     184 5F0F      SUBI	R16,0xFF
     185 4F1F      SBCI	R17,0xFF
     186 3704      CPI	R16,0x74
     187 E0E4      LDI	R30,4
     188 071E      CPC	R17,R30
     189 F3D0      BCS	0x0184
     18A 9508      RET
_delay_nms:
  i                    --> R10
  n                    --> R12
     18B 940E 0225 CALL	push_xgset003C
     18D 0168      MOVW	R12,R16
(0025)   }
(0026)   
(0027) void delay_nms(unsigned int n)       //N ms延时函数
(0028)   {
(0029)    unsigned int i=0;
     18E 24AA      CLR	R10
     18F 24BB      CLR	R11
(0030)    for (i=0;i<n;i++)
     190 C004      RJMP	0x0195
(0031)    delay_1ms();
     191 DFEF      RCALL	_delay_1ms
     192 01C5      MOVW	R24,R10
     193 9601      ADIW	R24,1
     194 015C      MOVW	R10,R24
     195 14AC      CP	R10,R12
     196 04BD      CPC	R11,R13
     197 F3C8      BCS	0x0191
     198 940C 0213 JMP	pop_xgset003C
FILE: D:\MYDOCU~1\MYMCUW~1\AVR\AD\ad.c
(0001) #include <iom16v.h>
(0002) #include "display.c"
(0003) #include "delay.h"
(0004) 
(0005) void port_init()
(0006) {
(0007)  PORTA = 0x00;
_port_init:
     19A 2422      CLR	R2
     19B BA2B      OUT	0x1B,R2
(0008)  DDRA  = 0x00;
     19C BA2A      OUT	0x1A,R2
(0009)  PORTB = 0x00;
     19D BA28      OUT	0x18,R2
(0010)  DDRB  = 0xF0;
     19E EF80      LDI	R24,0xF0
     19F BB87      OUT	0x17,R24
(0011)  PORTC = 0x00; //m103 output only
     1A0 BA25      OUT	0x15,R2
(0012)  DDRC  = 0x00;
     1A1 BA24      OUT	0x14,R2
(0013)  PORTD = 0x00;
     1A2 BA22      OUT	0x12,R2
(0014)  DDRD  = 0x00;
     1A3 BA21      OUT	0x11,R2
     1A4 9508      RET
(0015) }
(0016) 
(0017) void main()
(0018) {
(0019)   unsigned int Ddata;
(0020)   port_init();
_main:
  Ddata                --> R10
     1A5 DFF4      RCALL	_port_init
(0021)   SEG_INIT();
     1A6 DF2C      RCALL	_SEG_INIT
(0022)   ADMUX=0;
     1A7 2422      CLR	R2
     1A8 B827      OUT	0x07,R2
     1A9 C018      RJMP	0x01C2
(0023)   while(1)
(0024)   {
(0025)   ADCSRA=0XC0;
     1AA EC80      LDI	R24,0xC0
     1AB B986      OUT	0x06,R24
(0026)   delay_nms(100);
     1AC E604      LDI	R16,0x64
     1AD E010      LDI	R17,0
     1AE DFDC      RCALL	_delay_nms
(0027)   while(!(ADCSR&(1<<(ADIF))));
     1AF 9B34      SBIS	0x06,4
     1B0 CFFE      RJMP	0x01AF
(0028)   Ddata=ADCL;
     1B1 B0A4      IN	R10,0x04
     1B2 24BB      CLR	R11
(0029)   Ddata+=ADCH*256;
     1B3 B125      IN	R18,0x05
     1B4 2733      CLR	R19
     1B5 E000      LDI	R16,0
     1B6 E011      LDI	R17,1
     1B7 940E 0203 CALL	empy16s
     1B9 0EA0      ADD	R10,R16
     1BA 1EB1      ADC	R11,R17
(0030) //  Ddata=(float)(Ddata)/1023*5000;
(0031)   SEG_R(Ddata);
     1BB 0185      MOVW	R16,R10
     1BC DF6F      RCALL	_SEG_R
(0032)   SEG_L(Ddata);
     1BD 0185      MOVW	R16,R10
     1BE DF29      RCALL	_SEG_L
(0033)   delay_nms(1000);
FILE: <library>
     1BF EE08      LDI	R16,0xE8
     1C0 E013      LDI	R17,3
     1C1 DFC9      RCALL	_delay_nms
     1C2 CFE7      RJMP	0x01AA
     1C3 9508      RET
push_arg4:
     1C4 933A      ST	R19,-Y
     1C5 932A      ST	R18,-Y
push_arg2:
     1C6 931A      ST	R17,-Y
     1C7 930A      ST	R16,-Y
     1C8 9508      RET
mod16s:
     1C9 9468      BSET	6
     1CA 92DA      ST	R13,-Y
     1CB 2ED1      MOV	R13,R17
     1CC C004      RJMP	0x01D1
div16s:
     1CD 94E8      BCLR	6
     1CE 92DA      ST	R13,-Y
     1CF 2ED1      MOV	R13,R17
     1D0 26D3      EOR	R13,R19
     1D1 FF17      SBRS	R17,7
     1D2 C004      RJMP	0x01D7
     1D3 9510      COM	R17
     1D4 9500      COM	R16
     1D5 5F0F      SUBI	R16,0xFF
     1D6 4F1F      SBCI	R17,0xFF
     1D7 FF37      SBRS	R19,7
     1D8 C004      RJMP	0x01DD
     1D9 9530      COM	R19
     1DA 9520      COM	R18
     1DB 5F2F      SUBI	R18,0xFF
     1DC 4F3F      SBCI	R19,0xFF
     1DD 940E 01EA CALL	xdiv16u
     1DF FED7      SBRS	R13,7
     1E0 C004      RJMP	0x01E5
     1E1 9510      COM	R17
     1E2 9500      COM	R16
     1E3 5F0F      SUBI	R16,0xFF
     1E4 4F1F      SBCI	R17,0xFF
     1E5 90D9      LD	R13,Y+
     1E6 9508      RET
mod16u:
     1E7 9468      BSET	6
     1E8 C001      RJMP	xdiv16u
div16u:
     1E9 94E8      BCLR	6
xdiv16u:
     1EA 92EA      ST	R14,-Y
     1EB 92FA      ST	R15,-Y
     1EC 938A      ST	R24,-Y
     1ED 24EE      CLR	R14
     1EE 24FF      CLR	R15
     1EF E180      LDI	R24,0x10
     1F0 0F00      LSL	R16
     1F1 1F11      ROL	R17
     1F2 1CEE      ROL	R14
     1F3 1CFF      ROL	R15
     1F4 16E2      CP	R14,R18
     1F5 06F3      CPC	R15,R19
     1F6 F018      BCS	0x01FA
     1F7 1AE2      SUB	R14,R18
     1F8 0AF3      SBC	R15,R19
     1F9 9503      INC	R16
     1FA 958A      DEC	R24
     1FB F7A1      BNE	0x01F0
     1FC F416      BRTC	0x01FF
     1FD 2D0E      MOV	R16,R14
     1FE 2D1F      MOV	R17,R15
     1FF 9189      LD	R24,Y+
     200 90F9      LD	R15,Y+
     201 90E9      LD	R14,Y+
     202 9508      RET
empy16s:
     203 920A      ST	R0,-Y
     204 921A      ST	R1,-Y
     205 938A      ST	R24,-Y
     206 939A      ST	R25,-Y
     207 9F02      MUL	R16,R18
     208 01C0      MOVW	R24,R0
     209 9F12      MUL	R17,R18
     20A 0D90      ADD	R25,R0
     20B 9F03      MUL	R16,R19
     20C 0D90      ADD	R25,R0
     20D 018C      MOVW	R16,R24
     20E 9199      LD	R25,Y+
     20F 9189      LD	R24,Y+
     210 9019      LD	R1,Y+
     211 9009      LD	R0,Y+
     212 9508      RET
pop_xgset003C:
     213 90A9      LD	R10,Y+
     214 90B9      LD	R11,Y+
     215 90C9      LD	R12,Y+
     216 90D9      LD	R13,Y+
     217 9508      RET
pop_xgset00FC:
     218 90A9      LD	R10,Y+
     219 90B9      LD	R11,Y+
     21A 90C9      LD	R12,Y+
     21B 90D9      LD	R13,Y+
     21C 90E9      LD	R14,Y+
     21D 90F9      LD	R15,Y+
     21E 9508      RET
push_xgsetF0FC:
     21F 937A      ST	R23,-Y
     220 936A      ST	R22,-Y
push_xgset30FC:
     221 935A      ST	R21,-Y
     222 934A      ST	R20,-Y
push_xgset00FC:
     223 92FA      ST	R15,-Y
     224 92EA      ST	R14,-Y
push_xgset003C:
     225 92DA      ST	R13,-Y
     226 92CA      ST	R12,-Y
     227 92BA      ST	R11,-Y
     228 92AA      ST	R10,-Y
     229 9508      RET

⌨️ 快捷键说明

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