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

📄 24c02.lis

📁 meg16 的所有功能实例
💻 LIS
📖 第 1 页 / 共 4 页
字号:
 0084 2224              clr R2
 0086 2BBA              out 0x1b,R2
 0088                   .dbline 120
 0088 80E0              ldi R24,<_BitTab
 008A 90E0              ldi R25,>_BitTab
 008C E0910000          lds R30,_DISP_NUM
 0090 FF27              clr R31
 0092 E80F              add R30,R24
 0094 F91F              adc R31,R25
 0096 2080              ldd R2,z+0
 0098 28BA              out 0x18,R2
 009A                   .dbline 121
 009A 80E0              ldi R24,<_DISP_DATA
 009C 90E0              ldi R25,>_DISP_DATA
 009E E0910000          lds R30,_DISP_NUM
 00A2 FF27              clr R31
 00A4 E80F              add R30,R24
 00A6 F91F              adc R31,R25
 00A8 E081              ldd R30,z+0
 00AA FF27              clr R31
 00AC 80E0              ldi R24,<_DispTab
 00AE 90E0              ldi R25,>_DispTab
 00B0 E80F              add R30,R24
 00B2 F91F              adc R31,R25
 00B4 2080              ldd R2,z+0
 00B6 2BBA              out 0x1b,R2
 00B8                   .dbline 124
 00B8 80910000          lds R24,_DISP_NUM
 00BC 8F5F              subi R24,255    ; addi 1
 00BE 80930000          sts _DISP_NUM,R24
 00C2                   .dbline 125
 00C2 8430              cpi R24,4
 00C4 19F4              brne L18
 00C6                   .dbline 126
 00C6 2224              clr R2
 00C8 20920000          sts _DISP_NUM,R2
 00CC           L18:
 00CC                   .dbline -2
 00CC           L17:
 00CC                   .dbline 0 ; func end
 00CC 0895              ret
 00CE                   .dbend
                        .area vector(rom, abs)
                        .org 76
 004C 0C946700          jmp _timer0comp
                        .area text(rom, con, rel)
 00CE                   .dbfile E:\MYWORK~1\开发设计\EasyAVR\程序范例\Mega16例程\24C02T~1\24c02.c
 00CE                   .dbfunc e timer0comp _timer0comp fV
                        .even
 00CE           _timer0comp::
 00CE 0E940000          xcall push_lset
 00D2                   .dbline -1
 00D2                   .dbline 131
 00D2           ; }
 00D2           ; //显示函数,DISP_NUM决定显示哪个LED
 00D2           ; //采用共阴LED动态显示方法,定时中断函数里面调用
 00D2           ; void Display(void)            
 00D2           ; {
 00D2           ;  PORTA=0x00;                                                          //清除显示再位选
 00D2           ;  PORTB=BitTab[DISP_NUM];                                      //PB口接位选
 00D2           ;  PORTA=DispTab[DISP_DATA[DISP_NUM]];          //PA口接LED的段码
 00D2           ; 
 00D2           ;  
 00D2           ;  DISP_NUM++;                  //先显示高位,再显示低位
 00D2           ;  if(DISP_NUM==4)
 00D2           ;     DISP_NUM=0;
 00D2           ; }
 00D2           ; 
 00D2           ; #pragma interrupt_handler timer0comp:20
 00D2           ; void timer0comp (void)
 00D2           ; {
 00D2                   .dbline 132
 00D2           ;  Display();
 00D2 D8DF              xcall _Display
 00D4                   .dbline -2
 00D4           L20:
 00D4 0E940000          xcall pop_lset
 00D8                   .dbline 0 ; func end
 00D8 1895              reti
 00DA                   .dbend
 00DA                   .dbfunc e main _main fV
                        .even
 00DA           _main::
 00DA                   .dbline -1
 00DA                   .dbline 136
 00DA           ; } 
 00DA           ; 
 00DA           ; void main(void)
 00DA           ; {
 00DA                   .dbline 138
 00DA           ;  
 00DA           ;  DDRA=0XFF;
 00DA 8FEF              ldi R24,255
 00DC 8ABB              out 0x1a,R24
 00DE                   .dbline 139
 00DE           ;  PORTA=0X00;
 00DE 2224              clr R2
 00E0 2BBA              out 0x1b,R2
 00E2                   .dbline 140
 00E2           ;  DDRB=0X0F;
 00E2 8FE0              ldi R24,15
 00E4 87BB              out 0x17,R24
 00E6                   .dbline 141
 00E6           ;  PORTB=0X00;
 00E6 28BA              out 0x18,R2
 00E8                   .dbline 144
 00E8           ;  
 00E8           ;  //按键0端口初始化
 00E8           ;  DDRD &=~0x04;                //设置PD2为输入                                                         
 00E8 8A98              cbi 0x11,2
 00EA                   .dbline 145
 00EA           ;  PORTD|=0x04;         //设置PD2为上拉
 00EA 929A              sbi 0x12,2
 00EC                   .dbline 147
 00EC           ;  
 00EC           ;  INT0_Init();                 //TART初始化
 00EC A2DF              xcall _INT0_Init
 00EE                   .dbline 150
 00EE           ;  
 00EE           ;  //t/c0初始化(10ms)
 00EE           ;  TCCR0=0X0d;
 00EE 8DE0              ldi R24,13
 00F0 83BF              out 0x33,R24
 00F2                   .dbline 151
 00F2           ;  TCNT0=0X00;
 00F2 2224              clr R2
 00F4 22BE              out 0x32,R2
 00F6                   .dbline 152
 00F6           ;  OCR0=0X48;
 00F6 88E4              ldi R24,72
 00F8 8CBF              out 0x3c,R24
 00FA                   .dbline 153
 00FA           ;  TIMSK=0X02;
 00FA 82E0              ldi R24,2
 00FC 89BF              out 0x39,R24
 00FE                   .dbline 156
 00FE           ; 
 00FE           ;  //asm("sei");
 00FE           ;  SEI();                       //全局中断使能
 00FE 7894              sei
 0100                   .dbline 158
 0100           ;  
 0100           ;  I2C_Ini();
 0100 09D0              xcall _I2C_Ini
 0102                   .dbline 160
 0102           ;  
 0102           ;  Write_EN_DO;
 0102 8E9A              sbi 0x11,6
 0104                   .dbline 160
 0104                   .dbline 161
 0104           ;  Write_EN_1;
 0104 969A              sbi 0x12,6
 0106                   .dbline 161
 0106                   .dbline 162
 0106           ;  DISP_DATA[3]=i2c_Read(0x02,AT24C02_ADDR);
 0106 20EA              ldi R18,160
 0108 02E0              ldi R16,2
 010A A8D0              xcall _i2c_Read
 010C 00931100          sts _DISP_DATA+3,R16
 0110                   .dbline 164
 0110           ; 
 0110           ;  for(;;)
 0110           L23:
 0110                   .dbline 165
 0110                   .dbline 167
 0110                   .dbline 164
 0110                   .dbline 164
 0110 FFCF              xjmp L23
 0112           X2:
 0112                   .dbline -2
 0112           L21:
 0112                   .dbline 0 ; func end
 0112 0895              ret
 0114                   .dbend
 0114                   .dbfunc e I2C_Ini _I2C_Ini fV
                        .even
 0114           _I2C_Ini::
 0114                   .dbline -1
 0114                   .dbline 174
 0114           ;       { 
 0114           ;     
 0114           ;       }
 0114           ; }
 0114           ; 
 0114           ; 
 0114           ; //=======================================================================
 0114           ; //初始化端口
 0114           ; void I2C_Ini(void)
 0114           ; {
 0114                   .dbline 175
 0114           ;       i2c_ddr|=(1<<SCL);                      //SCK为输出
 0114 A09A              sbi 0x14,0
 0116                   .dbline 176
 0116           ;       i2c_ddr|=(1<<SDA);                  //SDA为双向的,先设置为输出
 0116 A19A              sbi 0x14,1
 0118                   .dbline -2
 0118           L27:
 0118                   .dbline 0 ; func end
 0118 0895              ret
 011A                   .dbend
 011A                   .dbfunc e IICStart _IICStart fV
                        .even
 011A           _IICStart::
 011A                   .dbline -1
 011A                   .dbline 183
 011A           ; 
 011A           ; 
 011A           ; }
 011A           ; //=======================================================================
 011A           ; //启动总线。根据IIC协议,SCL为1时,SDA从1转变为0。
 011A           ; void IICStart(void)
 011A           ; {   SCL_0;
 011A                   .dbline 183
 011A                   .dbline 183
 011A A898              cbi 0x15,0
 011C                   .dbline 183
 011C 04E6              ldi R16,100
 011E 10E0              ldi R17,0
 0120 6FDF              xcall _Delay_us
 0122                   .dbline 183
 0122                   .dbline 183
 0122                   .dbline 185
 0122           ; 
 0122           ;       SDA_1;
 0122                   .dbline 185
 0122 A99A              sbi 0x15,1
 0124                   .dbline 185
 0124 04E6              ldi R16,100
 0126 10E0              ldi R17,0
 0128 6BDF              xcall _Delay_us
 012A                   .dbline 185
 012A                   .dbline 185
 012A                   .dbline 186
 012A           ;       SCL_1;
 012A                   .dbline 186
 012A A89A              sbi 0x15,0
 012C                   .dbline 186
 012C 04E6              ldi R16,100
 012E 10E0              ldi R17,0
 0130 67DF              xcall _Delay_us
 0132                   .dbline 186
 0132                   .dbline 186
 0132                   .dbline 187
 0132           ;       SDA_0;
 0132                   .dbline 187
 0132 A998              cbi 0x15,1
 0134                   .dbline 187
 0134 04E6              ldi R16,100
 0136 10E0              ldi R17,0
 0138 63DF              xcall _Delay_us
 013A                   .dbline 187
 013A                   .dbline 187
 013A                   .dbline 188
 013A           ;       SCL_0;
 013A                   .dbline 188
 013A A898              cbi 0x15,0
 013C                   .dbline 188
 013C 04E6              ldi R16,100
 013E 10E0              ldi R17,0
 0140 5FDF              xcall _Delay_us
 0142                   .dbline 188
 0142                   .dbline 188
 0142                   .dbline -2
 0142           L28:
 0142                   .dbline 0 ; func end
 0142 0895              ret
 0144                   .dbend
 0144                   .dbfunc e IICStop _IICStop fV
                        .even
 0144           _IICStop::
 0144                   .dbline -1
 0144                   .dbline 193
 0144           ; }
 0144           ; //=======================================================================
 0144           ; //停止IIC总线。根据IIC协议,SCL为1时,SDA从0转变为1。
 0144           ; void IICStop(void)
 0144           ; {
 0144                   .dbline 194
 0144           ;       SCL_0;
 0144                   .dbline 194
 0144 A898              cbi 0x15,0
 0146                   .dbline 194
 0146 04E6              ldi R16,100
 0148 10E0              ldi R17,0
 014A 5ADF              xcall _Delay_us
 014C                   .dbline 194
 014C                   .dbline 194
 014C                   .dbline 195
 014C           ;       SDA_0;
 014C                   .dbline 195
 014C A998              cbi 0x15,1
 014E                   .dbline 195
 014E 04E6              ldi R16,100
 0150 10E0              ldi R17,0
 0152 56DF              xcall _Delay_us
 0154                   .dbline 195
 0154                   .dbline 195
 0154                   .dbline 196
 0154           ;       SCL_1;
 0154                   .dbline 196
 0154 A89A              sbi 0x15,0
 0156                   .dbline 196

⌨️ 快捷键说明

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