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