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

📄 conter_icc.lst

📁 用M16控制,定时器工作于计数方式,计数值同步显示在LCD上
💻 LST
字号:
__text_start:
__start:
      32 E5CF      LDI	R28,0x5F
      33 E0D4      LDI	R29,4
      34 BFCD      OUT	0x3D,R28
      35 BFDE      OUT	0x3E,R29
      36 51CE      SUBI	R28,0x1E
      37 40D0      SBCI	R29,0
      38 EA0A      LDI	R16,0xAA
      39 8308      STD	Y+0,R16
      3A 2400      CLR	R0
      3B E6EF      LDI	R30,0x6F
      3C E0F0      LDI	R31,0
      3D E010      LDI	R17,0
      3E 37E1      CPI	R30,0x71
      3F 07F1      CPC	R31,R17
      40 F011      BEQ	0x0043
      41 9201      ST	R0,Z+
      42 CFFB      RJMP	0x003E
      43 8300      STD	Z+0,R16
      44 E5E4      LDI	R30,0x54
      45 E0F0      LDI	R31,0
      46 E6A0      LDI	R26,0x60
      47 E0B0      LDI	R27,0
      48 E010      LDI	R17,0
      49 E000      LDI	R16,0
      4A BF0B      OUT	0x3B,R16
      4B 36E3      CPI	R30,0x63
      4C 07F1      CPC	R31,R17
      4D F021      BEQ	0x0052
      4E 95C8      LPM
      4F 9631      ADIW	R30,1
      50 920D      ST	R0,X+
      51 CFF9      RJMP	0x004B
      52 940E 00A9 CALL	_main
_exit:
      54 CFFF      RJMP	_exit
FILE: E:\新建文件夹\conter_icc\cfile\delay.c
(0001) #define DELAY_C
(0002) #include "includes.h"
(0003) #define XTAL 4    //晶振频率,单位MHz
(0004) void delay_1us(void)                 //1us延时函数
(0005)   {
(0006)    asm("nop");
_delay_1us:
      55 0000      NOP
      56 9508      RET
_delay_nus:
  i                    --> R20
  n                    --> R10
      57 940E 0145 CALL	push_xgset300C
      59 0158      MOVW	R10,R16
(0007)   }
(0008) 
(0009) void delay_nus(unsigned int n)       //N us延时函数
(0010)   {
(0011)    unsigned int i=0;
(0012)    for (i=0;i<n;i++)
      5A 2744      CLR	R20
      5B 2755      CLR	R21
      5C C003      RJMP	0x0060
(0013)    delay_1us();
      5D DFF7      RCALL	_delay_1us
      5E 5F4F      SUBI	R20,0xFF
      5F 4F5F      SBCI	R21,0xFF
      60 154A      CP	R20,R10
      61 055B      CPC	R21,R11
      62 F3D0      BCS	0x005D
      63 940C 014A JMP	pop_xgset300C
(0014)   }
(0015)   
(0016) void delay_1ms(void)                 //1ms延时函数
(0017)   {
(0018)    unsigned int i;
(0019)    for (i=0;i<(unsigned int)(XTAL*143-2);i++);
_delay_1ms:
  i                    --> R16
      65 2700      CLR	R16
      66 2711      CLR	R17
      67 C002      RJMP	0x006A
      68 5F0F      SUBI	R16,0xFF
      69 4F1F      SBCI	R17,0xFF
      6A E38A      LDI	R24,0x3A
      6B E092      LDI	R25,2
      6C 1708      CP	R16,R24
      6D 0719      CPC	R17,R25
      6E F3C8      BCS	0x0068
      6F 9508      RET
_delay_nms:
  i                    --> R20
  n                    --> R10
      70 940E 0145 CALL	push_xgset300C
      72 0158      MOVW	R10,R16
(0020)   }
(0021)   
(0022) void delay_nms(unsigned int n)       //N ms延时函数
(0023)   {
(0024)    unsigned int i=0;
(0025)    for (i=0;i<n;i++)
      73 2744      CLR	R20
      74 2755      CLR	R21
      75 C003      RJMP	0x0079
(0026)    {
(0027)       delay_1ms();
      76 DFEE      RCALL	_delay_1ms
      77 5F4F      SUBI	R20,0xFF
      78 4F5F      SBCI	R21,0xFF
      79 154A      CP	R20,R10
      7A 055B      CPC	R21,R11
      7B F3D0      BCS	0x0076
      7C 940C 014A JMP	pop_xgset300C
FILE: E:\新建文件夹\conter_icc\cfile\init.c
(0001) #define INIT_C
(0002) #include "includes.h"
(0003) void InitIo(void)
(0004) {
(0005)     DDRA  = 0xff;
_InitIo:
      7E EF8F      LDI	R24,0xFF
      7F BB8A      OUT	0x1A,R24
(0006)     PORTA = 0xff;
      80 BB8B      OUT	0x1B,R24
(0007)     DDRB  = 0x00;
      81 2422      CLR	R2
      82 BA27      OUT	0x17,R2
(0008)     //PORTB = 0x00;
(0009)     PORTB = 0xff;
      83 BB88      OUT	0x18,R24
(0010)     DDRC  = 0xff;
      84 BB84      OUT	0x14,R24
(0011)     PORTC = 0xff;    
      85 BB85      OUT	0x15,R24
      86 9508      RET
_display:
  sel                  --> R20
  i                    --> R22
  p                    --> R10
      87 940E 014F CALL	push_xgsetF00C
      89 0158      MOVW	R10,R16
FILE: E:\新建文件夹\conter_icc\cfile\main.c
(0001) #define MAIN_C
(0002) #include "includes.h"
(0003) /***************************************************/
(0004) /*T0工作于计数方式*/
(0005) /*计数脉冲从PB0(T0)脚输入*/
(0006) /***************************************************/
(0007) //数码管字形表
(0008) //数码管为公阴极
(0009) unsigned char table[10] = 
(0010) {
(0011)   0x3f,   //0
(0012)   0x06,   //1
(0013)   0x5b,   //2
(0014)   0x4f,   //3
(0015)   0x66,   //4
(0016)   0x6d,   //5 
(0017)   0x7d,   //6 
(0018)   0x07,   //7 
(0019)   0x7f,   //8
(0020)   0x6f    //9
(0021) };
(0022) 
(0023) void display(unsigned char *p)
(0024) {
(0025)     unsigned char i;
(0026)     unsigned sel = 0x08;
      8A E048      LDI	R20,0x8
      8B E050      LDI	R21,0
(0027)     for(i=0;i<4;i++)
      8C 2766      CLR	R22
      8D C017      RJMP	0x00A5
(0028)     {
(0029)         ConPort = ~sel;
      8E 011A      MOVW	R2,R20
      8F 9420      COM	R2
      90 9430      COM	R3
      91 BA25      OUT	0x15,R2
(0030)         OutPort = table[p[i]];
      92 2FE6      MOV	R30,R22
      93 27FF      CLR	R31
      94 0DEA      ADD	R30,R10
      95 1DFB      ADC	R31,R11
      96 81E0      LDD	R30,Z+0
      97 27FF      CLR	R31
      98 E685      LDI	R24,0x65
      99 E090      LDI	R25,0
      9A 0FE8      ADD	R30,R24
      9B 1FF9      ADC	R31,R25
      9C 8020      LDD	R2,Z+0
      9D BA2B      OUT	0x1B,R2
(0031)         delay_nms(1);
      9E E001      LDI	R16,1
      9F E010      LDI	R17,0
      A0 940E 0070 CALL	_delay_nms
(0032)         sel = sel>>1;
      A2 9556      LSR	R21
      A3 9547      ROR	R20
      A4 9563      INC	R22
      A5 3064      CPI	R22,4
      A6 F338      BCS	0x008E
      A7 940C 0156 JMP	pop_xgsetF00C
(0033)     }
(0034) }
(0035) 
(0036) 
(0037) 
(0038) 
(0039) 
(0040) void main(void)
(0041) {
(0042)     unsigned char load;
(0043)     InitIo();
_main:
  load                 --> R10
      A9 940E 007E CALL	_InitIo
(0044)     PORTA = 0xff;  //点亮测试所有数码管
      AB EF8F      LDI	R24,0xFF
      AC BB8B      OUT	0x1B,R24
(0045)     PORTC = 0x00;   
      AD 2422      CLR	R2
      AE BA25      OUT	0x15,R2
(0046)     delay_nms(10);
      AF E00A      LDI	R16,0xA
      B0 E010      LDI	R17,0
      B1 940E 0070 CALL	_delay_nms
(0047)     PORTC = 0xff;   //熄灭所有数码管
      B3 EF8F      LDI	R24,0xFF
      B4 BB85      OUT	0x15,R24
(0048)     TCCR0 |= (1<<CS02)|(1<<CS01);//T/C0工作于计数方式,下降沿触发
      B5 B783      IN	R24,0x33
      B6 6086      ORI	R24,6
      B7 BF83      OUT	0x33,R24
(0049)     TCNT0 = CNT;    //计数初值
      B8 9020 0064 LDS	R2,CNT
      BA BE22      OUT	0x32,R2
      BB C00A      RJMP	0x00C6
(0050)     while(1)
(0051)     {
(0052)         load = TCNT0;
      BC B6A2      IN	R10,0x32
(0053)         process(load,data);
      BD E620      LDI	R18,0x60
      BE E030      LDI	R19,0
      BF 2D0A      MOV	R16,R10
      C0 2711      CLR	R17
      C1 940E 00C8 CALL	_process
(0054)         display(data);
      C3 E600      LDI	R16,0x60
      C4 E010      LDI	R17,0
      C5 DFC1      RCALL	_display
      C6 CFF5      RJMP	0x00BC
      C7 9508      RET
_process:
  p                    --> R20
  i                    --> R10
      C8 940E 0145 CALL	push_xgset300C
      CA 01A9      MOVW	R20,R18
      CB 2EA0      MOV	R10,R16
FILE: E:\新建文件夹\conter_icc\cfile\number.c
(0001) #define NUMBER_C
(0002) #include "includes.h"
(0003) 
(0004) 
(0005) void process(unsigned char i,unsigned char *p)
(0006) {
(0007)     p[0] = i/1000;
      CC EE28      LDI	R18,0xE8
      CD E033      LDI	R19,3
      CE 2D0A      MOV	R16,R10
      CF 2711      CLR	R17
      D0 940E 00F7 CALL	div16s
      D2 01FA      MOVW	R30,R20
      D3 8300      STD	Z+0,R16
(0008)     i = i%1000;
      D4 EE28      LDI	R18,0xE8
      D5 E033      LDI	R19,3
      D6 2D0A      MOV	R16,R10
      D7 2711      CLR	R17
      D8 940E 00F3 CALL	mod16s
      DA 2EA0      MOV	R10,R16
(0009)     p[1] = i/100;
      DB E614      LDI	R17,0x64
      DC 940E 012F CALL	div8u
      DE 01FA      MOVW	R30,R20
      DF 8301      STD	Z+1,R16
(0010)     i = i%100;
      E0 E614      LDI	R17,0x64
      E1 2D0A      MOV	R16,R10
      E2 940E 012D CALL	mod8u
      E4 2EA0      MOV	R10,R16
(0011)     p[2] = i/10;
      E5 E01A      LDI	R17,0xA
      E6 940E 012F CALL	div8u
      E8 01FA      MOVW	R30,R20
      E9 8302      STD	Z+2,R16
(0012)     i = i%10;
      EA E01A      LDI	R17,0xA
      EB 2D0A      MOV	R16,R10
      EC 940E 012D CALL	mod8u
      EE 2EA0      MOV	R10,R16
(0013)     p[3] = i;
FILE: <library>
      EF 01FA      MOVW	R30,R20
      F0 82A3      STD	Z+3,R10
      F1 940C 014A JMP	pop_xgset300C
mod16s:
      F3 9468      BSET	6
      F4 92DA      ST	R13,-Y
      F5 2ED1      MOV	R13,R17
      F6 C004      RJMP	0x00FB
div16s:
      F7 94E8      BCLR	6
      F8 92DA      ST	R13,-Y
      F9 2ED1      MOV	R13,R17
      FA 26D3      EOR	R13,R19
      FB FF17      SBRS	R17,7
      FC C004      RJMP	0x0101
      FD 9510      COM	R17
      FE 9500      COM	R16
      FF 5F0F      SUBI	R16,0xFF
     100 4F1F      SBCI	R17,0xFF
     101 FF37      SBRS	R19,7
     102 C004      RJMP	0x0107
     103 9530      COM	R19
     104 9520      COM	R18
     105 5F2F      SUBI	R18,0xFF
     106 4F3F      SBCI	R19,0xFF
     107 940E 0114 CALL	xdiv16u
     109 FED7      SBRS	R13,7
     10A C004      RJMP	0x010F
     10B 9510      COM	R17
     10C 9500      COM	R16
     10D 5F0F      SUBI	R16,0xFF
     10E 4F1F      SBCI	R17,0xFF
     10F 90D9      LD	R13,Y+
     110 9508      RET
mod16u:
     111 9468      BSET	6
     112 C001      RJMP	xdiv16u
div16u:
     113 94E8      BCLR	6
xdiv16u:
     114 92EA      ST	R14,-Y
     115 92FA      ST	R15,-Y
     116 938A      ST	R24,-Y
     117 24EE      CLR	R14
     118 24FF      CLR	R15
     119 E180      LDI	R24,0x10
     11A 0F00      LSL	R16
     11B 1F11      ROL	R17
     11C 1CEE      ROL	R14
     11D 1CFF      ROL	R15
     11E 16E2      CP	R14,R18
     11F 06F3      CPC	R15,R19
     120 F018      BCS	0x0124
     121 1AE2      SUB	R14,R18
     122 0AF3      SBC	R15,R19
     123 9503      INC	R16
     124 958A      DEC	R24
     125 F7A1      BNE	0x011A
     126 F416      BRTC	0x0129
     127 2D0E      MOV	R16,R14
     128 2D1F      MOV	R17,R15
     129 9189      LD	R24,Y+
     12A 90F9      LD	R15,Y+
     12B 90E9      LD	R14,Y+
     12C 9508      RET
mod8u:
     12D 9468      BSET	6
     12E C001      RJMP	xdiv8u
div8u:
     12F 94E8      BCLR	6
xdiv8u:
     130 932A      ST	R18,-Y
     131 92FA      ST	R15,-Y
     132 92EA      ST	R14,-Y
     133 24FF      CLR	R15
     134 24EE      CLR	R14
     135 E120      LDI	R18,0x10
     136 0F00      LSL	R16
     137 1CFF      ROL	R15
     138 1CEE      ROL	R14
     139 16E1      CP	R14,R17
     13A F010      BCS	0x013D
     13B 1AE1      SUB	R14,R17
     13C 9503      INC	R16
     13D 952A      DEC	R18
     13E F7B9      BNE	0x0136
     13F F40E      BRTC	0x0141
     140 2D0E      MOV	R16,R14
     141 90E9      LD	R14,Y+
     142 90F9      LD	R15,Y+
     143 9129      LD	R18,Y+
     144 9508      RET
push_xgset300C:
     145 935A      ST	R21,-Y
     146 934A      ST	R20,-Y
     147 92BA      ST	R11,-Y
     148 92AA      ST	R10,-Y
     149 9508      RET
pop_xgset300C:
     14A 90A9      LD	R10,Y+
     14B 90B9      LD	R11,Y+
     14C 9149      LD	R20,Y+
     14D 9159      LD	R21,Y+
     14E 9508      RET
push_xgsetF00C:
     14F 937A      ST	R23,-Y
     150 936A      ST	R22,-Y
     151 935A      ST	R21,-Y
     152 934A      ST	R20,-Y
     153 92BA      ST	R11,-Y
     154 92AA      ST	R10,-Y
     155 9508      RET
pop_xgsetF00C:
     156 90A9      LD	R10,Y+
     157 90B9      LD	R11,Y+
     158 9149      LD	R20,Y+
     159 9159      LD	R21,Y+
     15A 9169      LD	R22,Y+
     15B 9179      LD	R23,Y+
     15C 9508      RET

⌨️ 快捷键说明

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