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

📄 24c02.lis

📁 meg16 的所有功能实例
💻 LIS
📖 第 1 页 / 共 4 页
字号:
                        .module _24c02.c
                        .area data(ram, con, rel)
 0000           _BitTab::
 0000                   .blkb 2
                        .area idata
 0000 FEFD              .byte 254,253
                        .area data(ram, con, rel)
 0002                   .blkb 2
                        .area idata
 0002 FBF7              .byte 251,247
                        .area data(ram, con, rel)
 0004                   .dbfile E:\MYWORK~1\开发设计\EasyAVR\程序范例\Mega16例程\24C02T~1\24c02.c
 0004                   .dbsym e BitTab _BitTab A[4:4]c
 0004           _DispTab::
 0004                   .blkb 2
                        .area idata
 0004 3F06              .byte 63,6
                        .area data(ram, con, rel)
 0006                   .dbfile E:\MYWORK~1\开发设计\EasyAVR\程序范例\Mega16例程\24C02T~1\24c02.c
 0006                   .blkb 2
                        .area idata
 0006 5B4F              .byte 91,'O
                        .area data(ram, con, rel)
 0008                   .dbfile E:\MYWORK~1\开发设计\EasyAVR\程序范例\Mega16例程\24C02T~1\24c02.c
 0008                   .blkb 2
                        .area idata
 0008 666D              .byte 'f,'m
                        .area data(ram, con, rel)
 000A                   .dbfile E:\MYWORK~1\开发设计\EasyAVR\程序范例\Mega16例程\24C02T~1\24c02.c
 000A                   .blkb 2
                        .area idata
 000A 7D07              .byte 125,7
                        .area data(ram, con, rel)
 000C                   .dbfile E:\MYWORK~1\开发设计\EasyAVR\程序范例\Mega16例程\24C02T~1\24c02.c
 000C                   .blkb 2
                        .area idata
 000C 7F6F              .byte 127,'o
                        .area data(ram, con, rel)
 000E                   .dbfile E:\MYWORK~1\开发设计\EasyAVR\程序范例\Mega16例程\24C02T~1\24c02.c
 000E                   .dbsym e DispTab _DispTab A[10:10]c
 000E           _DISP_DATA::
 000E                   .blkb 2
                        .area idata
 000E 0000              .byte 0,0
                        .area data(ram, con, rel)
 0010                   .dbfile E:\MYWORK~1\开发设计\EasyAVR\程序范例\Mega16例程\24C02T~1\24c02.c
 0010                   .blkb 2
                        .area idata
 0010 0000              .byte 0,0
                        .area data(ram, con, rel)
 0012                   .dbfile E:\MYWORK~1\开发设计\EasyAVR\程序范例\Mega16例程\24C02T~1\24c02.c
 0012                   .dbsym e DISP_DATA _DISP_DATA A[4:4]c
                        .area text(rom, con, rel)
 0000                   .dbfile E:\MYWORK~1\开发设计\EasyAVR\程序范例\Mega16例程\24C02T~1\24c02.c
 0000                   .dbfunc e Delay_us _Delay_us fV
 0000           ;           time -> R16,R17
                        .even
 0000           _Delay_us::
 0000                   .dbline -1
 0000                   .dbline 84
 0000           ; /****************************************Copyright (c)**************************************************
 0000           ; **                               ADEmbed Development Co.,LTD.                                    
 0000           ; **                                 http://www.adembed.com
 0000           ; **--------------File Info-------------------------------------------------------------------------------
 0000           ; ** File name:                 24c02.c
 0000           ; ** Last modified Date:  2008-12-13
 0000           ; ** Last Version:              1.0
 0000           ; ** Descriptions:              24c02 Test.
 0000           ; ** 
 0000           ; **------------------------------------------------------------------------------------------------------
 0000           ; ** Created by:                        junbolu
 0000           ; ** Created date:              2008-12-13
 0000           ; ** Version:                           1.0
 0000           ; ** Descriptions:              
 0000           ; **
 0000           ; **------------------------------------------------------------------------------------------------------
 0000           ; ** Modified by:
 0000           ; ** Modified date:
 0000           ; ** Version:
 0000           ; ** Descriptions:
 0000           ; **
 0000           ; **------------------------------------------------------------------------------------------------------
 0000           ; **ICC-AVR application builder : 2008-12-13
 0000           ; **Target : M16
 0000           ; **Crystal: 7.3728Mhz
 0000           ; **PC0--->SCL          PC1--->SDA                        PD6--->Write_EN
 0000           ; **
 0000           ; **描述:按键K0被按下一次,数码管的最低位会加一,并存储在24C02中,下一次系统启动时,会读取此数据并显示。
 0000           ; **      
 0000           ; **
 0000           ; **涉及知识点:
 0000           ; **          I2C
 0000           ; **           
 0000           ; **                    
 0000           ; *******************************************************************************************************/
 0000           ; 
 0000           ; #include<iom16v.h>
 0000           ; #include<macros.h>
 0000           ; #include"Define.h"
 0000           ; 
 0000           ; #define               fose                            7372800
 0000           ; 
 0000           ; #define     SCL                                 0
 0000           ; #define     SDA                                 1
 0000           ;  
 0000           ; #define       i2c_ddr                         DDRC
 0000           ; #define       i2c_port                        PORTC
 0000           ; #define       i2c_pin                         PINC      
 0000           ; 
 0000           ; #define       AT24C02_ADDR                                    0xA0  //EEPROM设备地址
 0000           ; //定义I2C的延迟参数
 0000           ; #define    DelayX     100                     //7.3M=>1;      8.4M=>2.建议5,因为将来的ClockCPU可以是16M
 0000           ; 
 0000           ; 
 0000           ; #define    SCL_1    {i2c_port|=1<<SCL;Delay_us(DelayX);}
 0000           ; #define    SCL_0    {i2c_port&=~(1<<SCL);Delay_us(DelayX);}
 0000           ; #define    SDA_1    {i2c_port|=1<<SDA;Delay_us(DelayX);}
 0000           ; #define    SDA_0    {i2c_port&=~(1<<SDA);Delay_us(DelayX);}
 0000           ; 
 0000           ; #define          Write_EN_DO        DDRD |= (1<<6);
 0000           ; #define          Write_EN_1         PORTD|= (1<<6);
 0000           ; #define          Write_EN_0         PORTD&=~(1<<6);
 0000           ; 
 0000           ; 
 0000           ; unsigned char DISP_NUM;                                                       //显示的位数
 0000           ; unsigned char BitTab[]={0xFE,0xFD,0xFB,0xF7}; //三位位选码
 0000           ; unsigned char DispTab[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F}; //LED字形码
 0000           ; unsigned char DISP_DATA[4]={0,0,0,0};             //显示的数字
 0000           ; 
 0000           ; void I2C_Ini(void);
 0000           ;  void IICStart(void);
 0000           ;  void IICStop(void);
 0000           ;  uint8 IICRecAck(void);
 0000           ;  uint8 IICReceiveByte(void);
 0000           ;  void IICSendByte(uint8 sendbyte);
 0000           ;  void IICNoAck(void);
 0000           ;  void IICACK(void);
 0000           ;  uint8 i2c_Read(uint8 subAddr,uint8 device);
 0000           ;  void i2c_Write(uint8 subAddr,uint8 device,uint8 data);
 0000           ; 
 0000           ; 
 0000           ; 
 0000           ; void Delay_us(unsigned int time)
 0000           ; {
 0000           L2:
 0000                   .dbline 85
 0000           L3:
 0000                   .dbline 85
 0000           ; while(time--);
 0000 1801              movw R2,R16
 0002 0150              subi R16,1
 0004 1040              sbci R17,0
 0006 2220              tst R2
 0008 D9F7              brne L2
 000A 3320              tst R3
 000C C9F7              brne L2
 000E           X0:
 000E                   .dbline -2
 000E           L1:
 000E                   .dbline 0 ; func end
 000E 0895              ret
 0010                   .dbsym r time 16 i
 0010                   .dbend
 0010                   .dbfunc e Delay_ms _Delay_ms fV
 0010           ;           time -> R20,R21
                        .even
 0010           _Delay_ms::
 0010 0E940000          xcall push_gset1
 0014 A801              movw R20,R16
 0016                   .dbline -1
 0016                   .dbline 89
 0016           ; }
 0016           ; 
 0016           ; void Delay_ms(unsigned int time)
 0016           ; {
 0016 03C0              xjmp L7
 0018           L6:
 0018                   .dbline 91
 0018                   .dbline 92
 0018 08EE              ldi R16,1000
 001A 13E0              ldi R17,3
 001C F1DF              xcall _Delay_us
 001E                   .dbline 93
 001E           L7:
 001E                   .dbline 90
 001E           ; while(time--)
 001E 1A01              movw R2,R20
 0020 4150              subi R20,1
 0022 5040              sbci R21,0
 0024 2220              tst R2
 0026 C1F7              brne L6
 0028 3320              tst R3
 002A B1F7              brne L6
 002C           X1:
 002C                   .dbline -2
 002C           L5:
 002C 0E940000          xcall pop_gset1
 0030                   .dbline 0 ; func end
 0030 0895              ret
 0032                   .dbsym r time 20 i
 0032                   .dbend
 0032                   .dbfunc e INT0_Init _INT0_Init fV
                        .even
 0032           _INT0_Init::
 0032                   .dbline -1
 0032                   .dbline 96
 0032           ;       {
 0032           ;       Delay_us(1000);
 0032           ;       }
 0032           ; }
 0032           ; void INT0_Init()
 0032           ; {
 0032                   .dbline 97
 0032           ;  GIFR |=0X40;              //清楚标志位
 0032 8AB7              in R24,0x3a
 0034 8064              ori R24,64
 0036 8ABF              out 0x3a,R24
 0038                   .dbline 99
 0038           ;  //MCUCR|=0X03;                          //上升沿触发中断     
 0038           ;  MCUCR|=0X02;MCUCR&=~0X01; //下降沿触发中断   
 0038 85B7              in R24,0x35
 003A 8260              ori R24,2
 003C 85BF              out 0x35,R24
 003E                   .dbline 99
 003E 85B7              in R24,0x35
 0040 8E7F              andi R24,254
 0042 85BF              out 0x35,R24
 0044                   .dbline 100
 0044           ;  GICR |=0X40;                            //使能外部中断0
 0044 8BB7              in R24,0x3b
 0046 8064              ori R24,64
 0048 8BBF              out 0x3b,R24
 004A                   .dbline -2
 004A           L9:
 004A                   .dbline 0 ; func end
 004A 0895              ret
 004C                   .dbend
                        .area vector(rom, abs)
                        .org 4
 0004 0C942600          jmp _int0_isr
                        .area text(rom, con, rel)
 004C                   .dbfile E:\MYWORK~1\开发设计\EasyAVR\程序范例\Mega16例程\24C02T~1\24c02.c
 004C                   .dbfunc e int0_isr _int0_isr fV
                        .even
 004C           _int0_isr::
 004C 0E940000          xcall push_lset
 0050 2197              sbiw R28,1
 0052                   .dbline -1
 0052                   .dbline 105
 0052           ; }
 0052           ; 
 0052           ; #pragma interrupt_handler int0_isr:2
 0052           ; void int0_isr(void)
 0052           ; {
 0052                   .dbline 106
 0052           ;  DISP_DATA[3]++;
 0052 80911100          lds R24,_DISP_DATA+3
 0056 8F5F              subi R24,255    ; addi 1
 0058 80931100          sts _DISP_DATA+3,R24
 005C                   .dbline 107
 005C           ;  if(DISP_DATA[3]>9)
 005C 89E0              ldi R24,9
 005E 20901100          lds R2,_DISP_DATA+3
 0062 8215              cp R24,R2
 0064 18F4              brsh L12
 0066                   .dbline 108
 0066           ;      {
 0066                   .dbline 109
 0066           ;        DISP_DATA[3]=0;
 0066 2224              clr R2
 0068 20921100          sts _DISP_DATA+3,R2
 006C                   .dbline 110
 006C           ;        }
 006C           L12:
 006C                   .dbline 111
 006C           ;  Write_EN_0;
 006C 9698              cbi 0x12,6
 006E                   .dbline 111
 006E                   .dbline 112
 006E           ;  i2c_Write(0x02,AT24C02_ADDR,DISP_DATA[3]);
 006E 20901100          lds R2,_DISP_DATA+3
 0072 2882              std y+0,R2
 0074 20EA              ldi R18,160
 0076 02E0              ldi R16,2
 0078 1BD1              xcall _i2c_Write
 007A                   .dbline 113
 007A           ;  Write_EN_1;
 007A 969A              sbi 0x12,6
 007C                   .dbline 113
 007C                   .dbline -2
 007C           L10:
 007C 2196              adiw R28,1
 007E 0E940000          xcall pop_lset
 0082                   .dbline 0 ; func end
 0082 1895              reti
 0084                   .dbend
 0084                   .dbfunc e Display _Display fV
                        .even
 0084           _Display::
 0084                   .dbline -1
 0084                   .dbline 118
 0084                   .dbline 119

⌨️ 快捷键说明

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