📄 24c02.lis
字号:
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 + -