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

📄 24cxx_test.lis

📁 24IIC的源代码
💻 LIS
📖 第 1 页 / 共 4 页
字号:
 00D6                   .dbline 65
 00D6           ;       
 00D6           ;  Stop();// 
 00D6 84E9              ldi R24,148
 00D8 86BF              out 0x36,R24
 00DA                   .dbline 66
 00DA           ;  delay_ms(30);//   
 00DA 0EE1              ldi R16,30
 00DC 10E0              ldi R17,0
 00DE ABDF              xcall _delay_ms
 00E0                   .dbline 67
 00E0           ;  _SEI(); 
 00E0 7894              sei
 00E2                   .dbline 68
 00E2           ;  return 0;   
 00E2 0027              clr R16
 00E4 04C0              xjmp L15
 00E6           L21:
 00E6                   .dbline 70
 00E6           ;  wr_exit://出错退出 
 00E6           ;    Stop();// 
 00E6 84E9              ldi R24,148
 00E8 86BF              out 0x36,R24
 00EA                   .dbline 71
 00EA           ;    _SEI(); 
 00EA 7894              sei
 00EC                   .dbline 72
 00EC           ;  return 1; 
 00EC 01E0              ldi R16,1
 00EE                   .dbline -2
 00EE           L15:
 00EE                   .dbline 0 ; func end
 00EE 2296              adiw R28,2
 00F0 0C940000          xjmp pop_xgset003C
 00F4                   .dbsym l ltg 0 S[reccnt]
 00F4                   .dbsym r Wdata 10 c
 00F4                   .dbsym r RomAddress 12 i
 00F4                   .dbend
 00F4                   .dbfunc e ReadByte _ReadByte fc
 00F4           ;            ltg -> y+0
 00F4           ;          temp0 -> R10
 00F4           ;     RomAddress -> R16,R17
                        .even
 00F4           _ReadByte::
 00F4 AA92              st -y,R10
 00F6 2297              sbiw R28,2
 00F8                   .dbline -1
 00F8                   .dbline 77
 00F8           ; }  
 00F8           ;   
 00F8           ; //******************************************   
 00F8           ; uint8 ReadByte(uint16 RomAddress) 
 00F8           ; {   
 00F8                   .dbline 80
 00F8           ;  uint8 temp;  
 00F8           ;  LngToChar ltg; 
 00F8           ;  _CLI(); 
 00F8 F894              cli
 00FA                   .dbline 81
 00FA           ;  ltg.rcnt=RomAddress; 
 00FA 1983              std y+1,R17
 00FC 0883              std y+0,R16
 00FE                   .dbline 83
 00FE           ; 
 00FE           ;  Start();  
 00FE 84EA              ldi R24,164
 0100 86BF              out 0x36,R24
 0102                   .dbline 84
 0102           ;  Wait();  
 0102           L44:
 0102                   .dbline 84
 0102           L45:
 0102                   .dbline 84
 0102 26B6              in R2,0x36
 0104 27FE              sbrs R2,7
 0106 FDCF              rjmp L44
 0108           X13:
 0108                   .dbline 84
 0108                   .dbline 84
 0108                   .dbline 85
 0108           ;  if (TestAck()!=START) goto re_exit;//ACK  
 0108 81B1              in R24,0x1
 010A 887F              andi R24,248
 010C 8830              cpi R24,8
 010E 09F0              breq L47
 0110           X14:
 0110                   .dbline 85
 0110 4AC0              xjmp L49
 0112           L47:
 0112                   .dbline 87
 0112           ;                         
 0112           ;  Write8Bit(wr_24c64_cmd);//  
 0112                   .dbline 87
 0112 80EA              ldi R24,160
 0114 83B9              out 0x3,R24
 0116                   .dbline 87
 0116 84E8              ldi R24,132
 0118 86BF              out 0x36,R24
 011A                   .dbline 87
 011A                   .dbline 87
 011A                   .dbline 88
 011A           ;  Wait();               
 011A           L50:
 011A                   .dbline 88
 011A           L51:
 011A                   .dbline 88
 011A 26B6              in R2,0x36
 011C 27FE              sbrs R2,7
 011E FDCF              rjmp L50
 0120           X15:
 0120                   .dbline 88
 0120                   .dbline 88
 0120                   .dbline 89
 0120           ;  if (TestAck()!=MT_SLA_ACK) goto re_exit;//ACK   
 0120 81B1              in R24,0x1
 0122 887F              andi R24,248
 0124 8831              cpi R24,24
 0126 09F0              breq L53
 0128           X16:
 0128                   .dbline 89
 0128 3EC0              xjmp L49
 012A           L53:
 012A                   .dbline 91
 012A           ;            
 012A           ;  Write8Bit(ltg.rcntl[1]); //写操作单元的高8位地址    
 012A                   .dbline 91
 012A 2980              ldd R2,y+1
 012C 23B8              out 0x3,R2
 012E                   .dbline 91
 012E 84E8              ldi R24,132
 0130 86BF              out 0x36,R24
 0132                   .dbline 91
 0132                   .dbline 91
 0132                   .dbline 92
 0132           ;  Wait();   
 0132           L56:
 0132                   .dbline 92
 0132           L57:
 0132                   .dbline 92
 0132 26B6              in R2,0x36
 0134 27FE              sbrs R2,7
 0136 FDCF              rjmp L56
 0138           X17:
 0138                   .dbline 92
 0138                   .dbline 92
 0138                   .dbline 93
 0138           ;  if (TestAck()!=MT_DATA_ACK) goto re_exit;   
 0138 81B1              in R24,0x1
 013A 887F              andi R24,248
 013C 8832              cpi R24,40
 013E 09F0              breq L59
 0140           X18:
 0140                   .dbline 93
 0140 32C0              xjmp L49
 0142           L59:
 0142                   .dbline 95
 0142           ;            
 0142           ;  Write8Bit(ltg.rcntl[0]);  //写操作单元的低8位地址       
 0142                   .dbline 95
 0142 2880              ldd R2,y+0
 0144 23B8              out 0x3,R2
 0146                   .dbline 95
 0146 84E8              ldi R24,132
 0148 86BF              out 0x36,R24
 014A                   .dbline 95
 014A                   .dbline 95
 014A                   .dbline 96
 014A           ;  Wait();   
 014A           L61:
 014A                   .dbline 96
 014A           L62:
 014A                   .dbline 96
 014A 26B6              in R2,0x36
 014C 27FE              sbrs R2,7
 014E FDCF              rjmp L61
 0150           X19:
 0150                   .dbline 96
 0150                   .dbline 96
 0150                   .dbline 97
 0150           ;  if (TestAck()!=MT_DATA_ACK) goto re_exit; 
 0150 81B1              in R24,0x1
 0152 887F              andi R24,248
 0154 8832              cpi R24,40
 0156 09F0              breq L64
 0158           X20:
 0158                   .dbline 97
 0158 26C0              xjmp L49
 015A           L64:
 015A                   .dbline 99
 015A           ;            
 015A           ;  Start();//twi 
 015A 84EA              ldi R24,164
 015C 86BF              out 0x36,R24
 015E                   .dbline 100
 015E           ;  Wait();   
 015E           L66:
 015E                   .dbline 100
 015E           L67:
 015E                   .dbline 100
 015E 26B6              in R2,0x36
 0160 27FE              sbrs R2,7
 0162 FDCF              rjmp L66
 0164           X21:
 0164                   .dbline 100
 0164                   .dbline 100
 0164                   .dbline 101
 0164           ;  if (TestAck()!=RE_START)  goto re_exit;   
 0164 81B1              in R24,0x1
 0166 887F              andi R24,248
 0168 8031              cpi R24,16
 016A 09F0              breq L69
 016C           X22:
 016C                   .dbline 101
 016C 1CC0              xjmp L49
 016E           L69:
 016E                   .dbline 103
 016E           ;             
 016E           ;  Write8Bit(rd_24c64_cmd);//   
 016E                   .dbline 103
 016E 81EA              ldi R24,161
 0170 83B9              out 0x3,R24
 0172                   .dbline 103
 0172 84E8              ldi R24,132
 0174 86BF              out 0x36,R24
 0176                   .dbline 103
 0176                   .dbline 103
 0176                   .dbline 104
 0176           ;  Wait();   
 0176           L71:
 0176                   .dbline 104
 0176           L72:
 0176                   .dbline 104
 0176 26B6              in R2,0x36
 0178 27FE              sbrs R2,7
 017A FDCF              rjmp L71
 017C           X23:
 017C                   .dbline 104
 017C                   .dbline 104
 017C                   .dbline 105
 017C           ;  if(TestAck()!=MR_SLA_ACK)  goto re_exit;//ACK   
 017C 81B1              in R24,0x1
 017E 887F              andi R24,248
 0180 8034              cpi R24,64
 0182 09F0              breq L74
 0184           X24:
 0184                   .dbline 105
 0184 10C0              xjmp L49
 0186           L74:
 0186                   .dbline 107
 0186           ;                
 0186           ;  Twi();//启动主I2C读方式 
 0186 84E8              ldi R24,132
 0188 86BF              out 0x36,R24
 018A                   .dbline 108
 018A           ;  Wait();   
 018A           L76:
 018A                   .dbline 108
 018A           L77:
 018A                   .dbline 108
 018A 26B6              in R2,0x36
 018C 27FE              sbrs R2,7
 018E FDCF              rjmp L76
 0190           X25:
 0190                   .dbline 108
 0190                   .dbline 108
 0190                   .dbline 109
 0190           ;  if(TestAck()!=MR_DATA_NOACK) goto re_exit;//ACK  MR_DATA_NOACK 0x58   
 0190 81B1              in R24,0x1
 0192 887F              andi R24,248
 0194 8835              cpi R24,88
 0196 09F0              breq L79
 0198           X26:
 0198                   .dbline 109
 0198 06C0              xjmp L49
 019A           L79:
 019A                   .dbline 111
 019A           ;    
 019A           ;  temp=TWDR;// 读取I2C接收的数据      
 019A A3B0              in R10,0x3
 019C                   .dbline 112
 019C           ;  Stop();//I2C停止  
 019C 84E9              ldi R24,148
 019E 86BF              out 0x36,R24
 01A0                   .dbline 114
 01A0           ; 
 01A0           ;  _SEI(); 
 01A0 7894              sei
 01A2                   .dbline 115
 01A2           ;  return temp; 
 01A2 0A2D              mov R16,R10
 01A4 04C0              xjmp L43
 01A6           L49:
 01A6                   .dbline 118
 01A6           ; 
 01A6           ;  re_exit://出错退出 
 01A6           ;  Stop(); 
 01A6 84E9              ldi R24,148
 01A8 86BF              out 0x36,R24
 01AA                   .dbline 119
 01AA           ;  _SEI(); 
 01AA 7894              sei
 01AC                   .dbline 120
 01AC           ;  return 0;  
 01AC 0027              clr R16
 01AE                   .dbline -2
 01AE           L43:
 01AE                   .dbline 0 ; func end
 01AE 2296              adiw R28,2
 01B0 A990              ld R10,y+
 01B2 0895              ret
 01B4                   .dbsym l ltg 0 S[reccnt]
 01B4                   .dbsym r temp0 10 c
 01B4                   .dbsym r RomAddress 16 i
 01B4                   .dbend
 01B4                   .dbfile D:\iccavr\mega16\11\24CXX\lcd1602.h
 01B4                   .dbfunc e LCD_init _LCD_init fV
                        .even
 01B4           _LCD_init::
 01B4                   .dbline -1
 01B4                   .dbline 34
 01B4           ; /*-------------------------------------------
 01B4           ;    RS----------PC2
 01B4           ;    RW----------GND
 01B4           ;    EN----------PC3
 01B4           ;    D4-D7-------PC4-PC7
 01B4           ; ---------------------------------------------*/
 01B4           ; //定义MCU与LCD的接口 
 01B4           ; #define LCD_EN_PORT   PORTC
 01B4           ; #define LCD_EN_DDR    DDRC
 01B4           ; #define LCD_RS_PORT   PORTC
 01B4           ; #define LCD_RS_DDR    DDRC
 01B4           ; #define LCD_DATA_PORT PORTC
 01B4           ; #define LCD_DATA_DDR  DDRC
 01B4           ; #define LCD_DATA_PIN  PINC
 01B4           ; #define LCD_EN        0x08   //portc3 out
 01B4           ; #define LCD_RS        0x04   //portc2 out
 01B4           ; #define LCD_DATA      0xf0 //portc4/5/6/7 out
 01B4           ; 
 01B4           ; /*----------------------------------------------------------
 01B4           ; Public function prototypes
 01B4           ; ----------------------------------------------------------*/
 01B4           ; void LCD_init(void);
 01B4           ; void LCD_en_write(void);
 01B4           ; void clear(void);
 01B4           ; void LCD_write_char(unsigned command,unsigned data);
 01B4           ; void LCD_set_xy(unsigned char x, unsigned char y);
 01B4           ; void LCD_write_string(unsigned char X,unsigned char Y,unsigned char *s);
 01B4           ; void LCD_write_data(unsigned char X,unsigned char Y,int dat);
 01B4           ; 
 01B4           ; /*------------------------------------------------------------
 01B4           ; 函数: lcd1602口线初始化和液晶初始化
 01B4           ; -------------------------------------------------------------*/
 01B4           ; void LCD_init(void) //液晶初始化
 01B4           ; {
 01B4                   .dbline 35
 01B4           ;  LCD_DATA_DDR|=LCD_DATA;
 01B4 84B3              in R24,0x14
 01B6 806F              ori R24,240
 01B8 84BB              out 0x14,R24
 01BA                   .dbline 36
 01BA           ;  LCD_EN_DDR|=LCD_EN;
 01BA A39A              sbi 0x14,3
 01BC                   .dbline 37

⌨️ 快捷键说明

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