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

📄 led7s.lst

📁 AVR mega16系列单片机开发程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
__start:
__text_start:
    003B E5CF      LDI	R28,0x5F
    003C E0D4      LDI	R29,4
    003D BFCD      OUT	0x3D,R28
    003E BFDE      OUT	0x3E,R29
    003F 51C0      SUBI	R28,0x10
    0040 40D0      SBCI	R29,0
    0041 EA0A      LDI	R16,0xAA
    0042 8308      STD	Y+0,R16
    0043 2400      CLR	R0
    0044 E6E0      LDI	R30,0x60
    0045 E0F0      LDI	R31,0
    0046 E010      LDI	R17,0
    0047 36E0      CPI	R30,0x60
    0048 07F1      CPC	R31,R17
    0049 F011      BEQ	0x004C
    004A 9201      ST	R0,Z+
    004B CFFB      RJMP	0x0047
    004C 8300      STD	Z+0,R16
    004D E7E6      LDI	R30,0x76
    004E E0F0      LDI	R31,0
    004F E6A0      LDI	R26,0x60
    0050 E0B0      LDI	R27,0
    0051 E010      LDI	R17,0
    0052 37E6      CPI	R30,0x76
    0053 07F1      CPC	R31,R17
    0054 F021      BEQ	0x0059
    0055 95C8      LPM
    0056 9631      ADIW	R30,1
    0057 920D      ST	R0,X+
    0058 CFF9      RJMP	0x0052
    0059 940E0063  CALL	_main
_exit:
    005B CFFF      RJMP	_exit
FILE: F:\单片机源程序\AVR单片机程序\MAGE16\LED\main.c
(0001) //Project : LED Display
(0002) //ICC-AVR application builder : 2007-8-5 
(0003) // Target : M16
(0004) // Crystal : 7.3728Mhz
(0005) // Writer : you hu
(0006) //descruption:
(0007)                //ABCD 和 abcdefg dpi 共12个IO口
(0008)                // 默认为 PC(0123) 和 PA
(0009)                //LED数据 不显点,亮的段为1,连接为P0~P7对应a~g,dp
(0010) #include "config.h"
(0011) 
(0012) void init_devices(void)
(0013) {
(0014)   CLI(); //disable all interrupts
_init_devices:
    005C 94F8      BCLR	7
(0015)   MCUCR = 0x00;
    005D 2422      CLR	R2
    005E BE25      OUT	0x35,R2
(0016)   GICR  = 0x00;
    005F BE2B      OUT	0x3B,R2
(0017)   TIMSK = 0x00; //timer interrupt sources
    0060 BE29      OUT	0x39,R2
(0018)   SEI(); //re-enable interrupts
    0061 9478      BSET	7
    0062 9508      RET
(0019) 
(0020) }
(0021) 
(0022) void main(void)
(0023) {
(0024)   unsigned int i;
(0025)   init_devices();
_main:
  i                    --> R20
    0063 DFF8      RCALL	_init_devices
(0026)   led_init();   
    0064 940E00F3  CALL	_led_init
    0066 C009      RJMP	0x0070
(0027)    while(1)
(0028)      { 
(0029)       i++;
    0067 5F4F      SUBI	R20,0xFF
    0068 4F5F      SBCI	R21,0xFF
(0030)       delay_ms(6);
    0069 E006      LDI	R16,6
    006A E010      LDI	R17,0
    006B 940E00B4  CALL	_delay_ms
(0031)       display(i);           
    006D 018A      MOVW	R16,R20
    006E 940E0114  CALL	_display
    0070 CFF6      RJMP	0x0067
    0071 9508      RET
FILE: F:\单片机源程序\AVR单片机程序\MAGE16\LED\delay.c
(0001) 
(0002) #include "config.h"
(0003) 
(0004) void delay_1us(void)
(0005) {
(0006)  asm("nop");
_delay_1us:
    0072 0000      NOP
    0073 9508      RET
(0007) }
(0008) 
(0009) void delay_1ms(void)
(0010) {
(0011)  unsigned int i;
(0012)  for(i=(xtal*143-2);i>0;i--);
_delay_1ms:
  i                    --> R16
    0074 E706      LDI	R16,0x76
    0075 E014      LDI	R17,4
    0076 C002      RJMP	0x0079
    0077 5001      SUBI	R16,1
    0078 4010      SBCI	R17,0
    0079 3000      CPI	R16,0
    007A 0701      CPC	R16,R17
    007B F7D9      BNE	0x0077
    007C 9508      RET
_delay_1s:
  i                    --> R20
    007D 940E01AB  CALL	push_gset1
(0013) }
(0014) 
(0015) /***********************
(0016) ** 1S延时,误差可能稍大
(0017) ** 250ms*4=1000ms
(0018) ************************/
(0019) void delay_1s(void)
(0020) {
(0021)  unsigned int i;
(0022)    for(i=250;i>0;i--)   //250ms*4=1000ms
    007F EF4A      LDI	R20,0xFA
    0080 E050      LDI	R21,0
    0081 C003      RJMP	0x0085
(0023)    delay_1ms();
    0082 DFF1      RCALL	_delay_1ms
    0083 5041      SUBI	R20,1
    0084 4050      SBCI	R21,0
    0085 3040      CPI	R20,0
    0086 0745      CPC	R20,R21
    0087 F7D1      BNE	0x0082
(0024)    for(i=250;i>0;i--)
    0088 EF4A      LDI	R20,0xFA
    0089 E050      LDI	R21,0
    008A C003      RJMP	0x008E
(0025)    delay_1ms();
    008B DFE8      RCALL	_delay_1ms
    008C 5041      SUBI	R20,1
    008D 4050      SBCI	R21,0
    008E 3040      CPI	R20,0
    008F 0745      CPC	R20,R21
    0090 F7D1      BNE	0x008B
(0026)    for(i=250;i>0;i--)
    0091 EF4A      LDI	R20,0xFA
    0092 E050      LDI	R21,0
    0093 C003      RJMP	0x0097
(0027)    delay_1ms();
    0094 DFDF      RCALL	_delay_1ms
    0095 5041      SUBI	R20,1
    0096 4050      SBCI	R21,0
    0097 3040      CPI	R20,0
    0098 0745      CPC	R20,R21
    0099 F7D1      BNE	0x0094
(0028)    for(i=250;i>0;i--)
    009A EF4A      LDI	R20,0xFA
    009B E050      LDI	R21,0
    009C C003      RJMP	0x00A0
(0029)    delay_1ms();
    009D DFD6      RCALL	_delay_1ms
    009E 5041      SUBI	R20,1
    009F 4050      SBCI	R21,0
    00A0 3040      CPI	R20,0
    00A1 0745      CPC	R20,R21
    00A2 F7D1      BNE	0x009D
    00A3 940E01AE  CALL	pop_gset1
    00A5 9508      RET
_delay_us:
  i                    --> R20
  n                    --> R22
    00A6 940E01A9  CALL	push_gset2
    00A8 01B8      MOVW	R22,R16
(0030) }
(0031) 
(0032) /***********************
(0033) **微秒级延时
(0034) ************************/
(0035) void delay_us(unsigned int n)
(0036) {
(0037)  unsigned int i;
(0038)  for(i=n;i>0;i--)
    00A9 01AB      MOVW	R20,R22
    00AA C003      RJMP	0x00AE
(0039)  delay_1us();
    00AB DFC6      RCALL	_delay_1us
    00AC 5041      SUBI	R20,1
    00AD 4050      SBCI	R21,0
    00AE 3040      CPI	R20,0
    00AF 0745      CPC	R20,R21
    00B0 F7D1      BNE	0x00AB
    00B1 940E01A0  CALL	pop_gset2
    00B3 9508      RET
_delay_ms:
  i                    --> R20
  n                    --> R22
    00B4 940E01A9  CALL	push_gset2
    00B6 01B8      MOVW	R22,R16
(0040) }
(0041) 
(0042) /***********************
(0043) **毫秒级延时
(0044) ************************/
(0045) void delay_ms(unsigned int n)
(0046) {
(0047)  unsigned int i;
(0048)  for(i=n;i>0;i--)
    00B7 01AB      MOVW	R20,R22
    00B8 C003      RJMP	0x00BC
(0049)  delay_1ms();
    00B9 DFBA      RCALL	_delay_1ms
    00BA 5041      SUBI	R20,1
    00BB 4050      SBCI	R21,0
    00BC 3040      CPI	R20,0
    00BD 0745      CPC	R20,R21
    00BE F7D1      BNE	0x00B9
    00BF 940E01A0  CALL	pop_gset2
    00C1 9508      RET
_delay_s:
  j                    --> R20
  i                    --> R22
  n                    --> R22
    00C2 940E01A9  CALL	push_gset2
    00C4 01B8      MOVW	R22,R16
(0050) }
(0051) 
(0052) /***********************
(0053) **秒级延时,太浪费资源,不建议使用
(0054) ************************/
(0055) void delay_s(unsigned int n)
(0056) {
(0057)  unsigned int i,j;
(0058)  for(j=n;j>0;j--)
    00C5 01AB      MOVW	R20,R22
    00C6 C026      RJMP	0x00ED
(0059)   {
(0060)    for(i=250;i>0;i--)   //250ms*4=1000ms
    00C7 EF6A      LDI	R22,0xFA
    00C8 E070      LDI	R23,0
    00C9 C003      RJMP	0x00CD
(0061)    delay_1ms();
    00CA DFA9      RCALL	_delay_1ms
    00CB 5061      SUBI	R22,1
    00CC 4070      SBCI	R23,0
    00CD 3060      CPI	R22,0
    00CE 0767      CPC	R22,R23
    00CF F7D1      BNE	0x00CA
(0062)    for(i=250;i>0;i--)
    00D0 EF6A      LDI	R22,0xFA
    00D1 E070      LDI	R23,0
    00D2 C003      RJMP	0x00D6
(0063)    delay_1ms();
    00D3 DFA0      RCALL	_delay_1ms
    00D4 5061      SUBI	R22,1
    00D5 4070      SBCI	R23,0
    00D6 3060      CPI	R22,0
    00D7 0767      CPC	R22,R23
    00D8 F7D1      BNE	0x00D3
(0064)    for(i=250;i>0;i--)
    00D9 EF6A      LDI	R22,0xFA
    00DA E070      LDI	R23,0
    00DB C003      RJMP	0x00DF
(0065)    delay_1ms();
    00DC DF97      RCALL	_delay_1ms
    00DD 5061      SUBI	R22,1
    00DE 4070      SBCI	R23,0
    00DF 3060      CPI	R22,0
    00E0 0767      CPC	R22,R23
    00E1 F7D1      BNE	0x00DC
(0066)    for(i=250;i>0;i--)
    00E2 EF6A      LDI	R22,0xFA
    00E3 E070      LDI	R23,0
    00E4 C003      RJMP	0x00E8
(0067)    delay_1ms();
    00E5 DF8E      RCALL	_delay_1ms
    00E6 5061      SUBI	R22,1
    00E7 4070      SBCI	R23,0
    00E8 3060      CPI	R22,0
    00E9 0767      CPC	R22,R23
    00EA F7D1      BNE	0x00E5
    00EB 5041      SUBI	R20,1
    00EC 4050      SBCI	R21,0
    00ED 3040      CPI	R20,0
    00EE 0745      CPC	R20,R21
    00EF F6B9      BNE	0x00C7
    00F0 940E01A0  CALL	pop_gset2

⌨️ 快捷键说明

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