?? 24cxx_test.lis
字號:
.module _24cxx_test.c
.area text(rom, con, rel)
0000 .dbfile D:\iccavr\mega16\11\24CXX\24cxx_test.c
0000 .dbfile D:\iccavr\mega16\11\24CXX\delay.h
0000 .dbfunc e delay_1us _delay_1us fV
.even
0000 _delay_1us::
0000 .dbline -1
0000 .dbline 6
0000 ; /**********延時函數*****************/
0000 ; /*-----------------------------------------------
0000 ; delay_us :1us延時函數
0000 ; ------------------------------------------------*/
0000 ; void delay_1us(void)
0000 ; {
0000 .dbline 7
0000 ; asm("nop");
0000 0000 nop
0002 .dbline -2
0002 L1:
0002 .dbline 0 ; func end
0002 0895 ret
0004 .dbend
0004 .dbfunc e delay_us _delay_us fV
0004 ; t -> R20,R21
.even
0004 _delay_us::
0004 4A93 st -y,R20
0006 5A93 st -y,R21
0008 A801 movw R20,R16
000A .dbline -1
000A .dbline 14
000A ; }
000A ; /*-----------------------------------------------
000A ; delay_nus :長延時函數
000A ; 輸入參數: t :延時時間 us
000A ; ------------------------------------------------*/
000A ; void delay_us(unsigned int t)
000A ; {
000A 01C0 xjmp L4
000C L3:
000C .dbline 16
000C ; while(t--)
000C ; delay_1us();
000C F9DF xcall _delay_1us
000E L4:
000E .dbline 15
000E 1A01 movw R2,R20
0010 4150 subi R20,1
0012 5040 sbci R21,0
0014 2220 tst R2
0016 D1F7 brne L3
0018 3320 tst R3
001A C1F7 brne L3
001C X0:
001C .dbline -2
001C L2:
001C .dbline 0 ; func end
001C 5991 ld R21,y+
001E 4991 ld R20,y+
0020 0895 ret
0022 .dbsym r t 20 i
0022 .dbend
0022 .dbfunc e delay_1ms _delay_1ms fV
0022 ; i0 -> R16,R17
.even
0022 _delay_1ms::
0022 .dbline -1
0022 .dbline 22
0022 ; }
0022 ; /*----------------------------------------------
0022 ; delay_ms :1ms延時函數
0022 ; -----------------------------------------------*/
0022 ; void delay_1ms(void)
0022 ; {
0022 .dbline 24
0022 ; unsigned int i;
0022 ; for(i=0;i<1140;i++);
0022 0027 clr R16
0024 1127 clr R17
0026 02C0 xjmp L10
0028 L7:
0028 .dbline 24
0028 L8:
0028 .dbline 24
0028 0F5F subi R16,255 ; offset = 1
002A 1F4F sbci R17,255
002C L10:
002C .dbline 24
002C 0437 cpi R16,116
002E E4E0 ldi R30,4
0030 1E07 cpc R17,R30
0032 D0F3 brlo L7
0034 X1:
0034 .dbline -2
0034 L6:
0034 .dbline 0 ; func end
0034 0895 ret
0036 .dbsym r i0 16 i
0036 .dbend
0036 .dbfunc e delay_ms _delay_ms fV
0036 ; t -> R20,R21
.even
0036 _delay_ms::
0036 4A93 st -y,R20
0038 5A93 st -y,R21
003A A801 movw R20,R16
003C .dbline -1
003C .dbline 31
003C ; }
003C ; /*----------------------------------------------
003C ; delay_nms :長延時函數
003C ; 輸入參數: t :延時時間 ms
003C ; -----------------------------------------------*/
003C ; void delay_ms(unsigned int t)
003C ; {
003C 01C0 xjmp L13
003E L12:
003E .dbline 33
003E ; while(t--)
003E ; delay_1ms();
003E F1DF xcall _delay_1ms
0040 L13:
0040 .dbline 32
0040 1A01 movw R2,R20
0042 4150 subi R20,1
0044 5040 sbci R21,0
0046 2220 tst R2
0048 D1F7 brne L12
004A 3320 tst R3
004C C1F7 brne L12
004E X2:
004E .dbline -2
004E L11:
004E .dbline 0 ; func end
004E 5991 ld R21,y+
0050 4991 ld R20,y+
0052 0895 ret
0054 .dbsym r t 20 i
0054 .dbend
0054 .dbfile D:\iccavr\mega16\11\24CXX\24cxx_twi.h
0054 .dbfunc e WriteByte _WriteByte fc
0054 .dbunion 0 2 reccnt
0054 .dbfield 0 rcnt i
0054 .dbfield 0 rcntl A[2:2]c
0054 .dbend
0054 ; ltg -> y+0
0054 ; Wdata -> R10
0054 ; RomAddress -> R12,R13
.even
0054 _WriteByte::
0054 0E940000 xcall push_xgset003C
0058 A22E mov R10,R18
005A 6801 movw R12,R16
005C 2297 sbiw R28,2
005E .dbline -1
005E .dbline 39
005E ; typedef unsigned char uint8;
005E ; typedef unsigned int uint16;
005E ;
005E ; typedef union reccnt
005E ; {
005E ; uint16 rcnt;
005E ; uint8 rcntl[2];
005E ; }LngToChar;
005E ;
005E ; #define wr_24c64_cmd 0xA0
005E ; #define rd_24c64_cmd 0xA1
005E ;
005E ; #define START 0x08
005E ; #define RE_START 0x10
005E ; #define MT_SLA_ACK 0x18
005E ; //#define MT_SLA_ACK 0x38
005E ; #define MT_SLA_NOACK 0x20
005E ; #define MT_DATA_ACK 0x28
005E ; #define MT_DATA_NOACK 0x30
005E ; #define MR_SLA_ACK 0x40
005E ; #define MR_SLA_NOACK 0x48
005E ; #define MR_DATA_ACK 0x50
005E ; #define MR_DATA_NOACK 0x58
005E ;
005E ; #define Start() (TWCR=(1<<TWINT)|(1<<TWSTA)|(1<<TWEN))
005E ; #define Stop() (TWCR=(1<<TWINT)|(1<<TWSTO)|(1<<TWEN))
005E ; #define Wait() {while(!(TWCR&(1<<TWINT)));}
005E ; #define TestAck() (TWSR&0xf8)
005E ; #define SetAck() (TWCR|=(1<<TWEA))
005E ; #define SetNoAck() (TWCR&=~(1<<TWEA))
005E ; #define Twi() (TWCR=(1<<TWINT)|(1<<TWEN))
005E ; #define Write8Bit(x) {TWDR=(x);TWCR=(1<<TWINT)|(1<<TWEN);}
005E ;
005E ; uint8 WriteByte(uint16 RomAddress,uint8 Wdata);
005E ; uint8 ReadByte(uint16 RomAddress);
005E ;
005E ; //******************************************
005E ; uint8 WriteByte(uint16 RomAddress,uint8 Wdata)
005E ; {
005E .dbline 42
005E ; LngToChar ltg;
005E ;
005E ; ltg.rcnt=RomAddress;
005E D982 std y+1,R13
0060 C882 std y+0,R12
0062 .dbline 44
0062 ;
0062 ; _CLI();
0062 F894 cli
0064 .dbline 45
0064 ; Start();//twi
0064 84EA ldi R24,164
0066 86BF out 0x36,R24
0068 .dbline 46
0068 ; Wait();
0068 L16:
0068 .dbline 46
0068 L17:
0068 .dbline 46
0068 26B6 in R2,0x36
006A 27FE sbrs R2,7
006C FDCF rjmp L16
006E X3:
006E .dbline 46
006E .dbline 46
006E .dbline 47
006E ; if(TestAck()!=START) goto wr_exit;//ACK 0x08
006E 81B1 in R24,0x1
0070 887F andi R24,248
0072 8830 cpi R24,8
0074 09F0 breq L19
0076 X4:
0076 .dbline 47
0076 37C0 xjmp L21
0078 L19:
0078 .dbline 49
0078 ;
0078 ; Write8Bit(wr_24c64_cmd);//
0078 .dbline 49
0078 80EA ldi R24,160
007A 83B9 out 0x3,R24
007C .dbline 49
007C 84E8 ldi R24,132
007E 86BF out 0x36,R24
0080 .dbline 49
0080 .dbline 49
0080 .dbline 50
0080 ; Wait();
0080 L22:
0080 .dbline 50
0080 L23:
0080 .dbline 50
0080 26B6 in R2,0x36
0082 27FE sbrs R2,7
0084 FDCF rjmp L22
0086 X5:
0086 .dbline 50
0086 .dbline 50
0086 .dbline 51
0086 ; if(TestAck()!=MT_SLA_ACK) goto wr_exit;//ACK MT_SLA_ACK 0x18
0086 81B1 in R24,0x1
0088 887F andi R24,248
008A 8831 cpi R24,24
008C 09F0 breq L25
008E X6:
008E .dbline 51
008E 2BC0 xjmp L21
0090 L25:
0090 .dbline 53
0090 ;
0090 ; Write8Bit(ltg.rcntl[1]); //寫操作單元的高8位地址
0090 .dbline 53
0090 2980 ldd R2,y+1
0092 23B8 out 0x3,R2
0094 .dbline 53
0094 84E8 ldi R24,132
0096 86BF out 0x36,R24
0098 .dbline 53
0098 .dbline 53
0098 .dbline 54
0098 ; Wait();
0098 L28:
0098 .dbline 54
0098 L29:
0098 .dbline 54
0098 26B6 in R2,0x36
009A 27FE sbrs R2,7
009C FDCF rjmp L28
009E X7:
009E .dbline 54
009E .dbline 54
009E .dbline 55
009E ; if(TestAck()!=MT_DATA_ACK) goto wr_exit;//ACK
009E 81B1 in R24,0x1
00A0 887F andi R24,248
00A2 8832 cpi R24,40
00A4 09F0 breq L31
00A6 X8:
00A6 .dbline 55
00A6 1FC0 xjmp L21
00A8 L31:
00A8 .dbline 57
00A8 ;
00A8 ; Write8Bit(ltg.rcntl[0]); //寫操作單元的低8位地址
00A8 .dbline 57
00A8 2880 ldd R2,y+0
00AA 23B8 out 0x3,R2
00AC .dbline 57
00AC 84E8 ldi R24,132
00AE 86BF out 0x36,R24
00B0 .dbline 57
00B0 .dbline 57
00B0 .dbline 58
00B0 ; Wait();
00B0 L33:
00B0 .dbline 58
00B0 L34:
00B0 .dbline 58
00B0 26B6 in R2,0x36
00B2 27FE sbrs R2,7
00B4 FDCF rjmp L33
00B6 X9:
00B6 .dbline 58
00B6 .dbline 58
00B6 .dbline 59
00B6 ; if(TestAck()!=MT_DATA_ACK) goto wr_exit;//ACK
00B6 81B1 in R24,0x1
00B8 887F andi R24,248
00BA 8832 cpi R24,40
00BC 09F0 breq L36
00BE X10:
00BE .dbline 59
00BE 13C0 xjmp L21
00C0 L36:
00C0 .dbline 61
00C0 ;
00C0 ; Write8Bit(Wdata);//
00C0 .dbline 61
00C0 A3B8 out 0x3,R10
00C2 .dbline 61
00C2 84E8 ldi R24,132
00C4 86BF out 0x36,R24
00C6 .dbline 61
00C6 .dbline 61
00C6 .dbline 62
00C6 ; Wait();
00C6 L38:
00C6 .dbline 62
00C6 L39:
00C6 .dbline 62
00C6 26B6 in R2,0x36
00C8 27FE sbrs R2,7
00CA FDCF rjmp L38
00CC X11:
00CC .dbline 62
00CC .dbline 62
00CC .dbline 63
00CC ; if(TestAck()!=MT_DATA_ACK) goto wr_exit;//ACK
00CC 81B1 in R24,0x1
00CE 887F andi R24,248
00D0 8832 cpi R24,40
00D2 09F0 breq L41
00D4 X12:
00D4 .dbline 63
00D4 08C0 xjmp L21
00D6 L41:
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -