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

📄 main.lis

📁 详细介绍M8两版间通讯
💻 LIS
字号:
                        .module Main.c
                        .area data(ram, con, rel)
 0000           _ExtendRomRW::
 0000                   .blkb 1
                        .area idata
 0000 00                .byte 0
                        .area data(ram, con, rel)
 0001                   .dbfile G:\Mega8程序\TCXO评估板\Main\Main.c
 0001                   .dbsym e ExtendRomRW _ExtendRomRW c
                        .area lit(rom, con, rel)
 0000           L2:
 0000 00                .byte 0
 0001 00000000          .byte 0,0,0,0
                        .area text(rom, con, rel)
 0000                   .dbfile G:\Mega8程序\TCXO评估板\Main\Main.c
 0000                   .dbfunc e main _main fV
 0000           ;        strTemp -> y+0
 0000           ;              i -> R22
 0000           ;        intTemp -> R10,R11
 0000           ;           pStr -> R20,R21
                        .even
 0000           _main::
 0000 2597              sbiw R28,5
 0002                   .dbline -1
 0002                   .dbline 19
 0002           ; #include <iom8v.h>
 0002           ; #include <macros.h>
 0002           ; extern void timer0_init(void);
 0002           ; extern void pwm1_init(void);
 0002           ; extern void uart_init(void);
 0002           ; extern void adc_init(void);
 0002           ; extern void int_init(void);
 0002           ; extern void TWI_init(void);
 0002           ; 
 0002           ; extern void puts(char *s);
 0002           ; extern void putchar(unsigned char c);
 0002           ; 
 0002           ; extern unsigned char i2c_read(unsigned char RomAddress);
 0002           ; extern void i2c_write(unsigned char Wdata,unsigned char RomAddress);
 0002           ; 
 0002           ; unsigned char ExtendRomAddr,ExtendRomVal;//定义片外EEPROM
 0002           ; unsigned char ExtendRomRW=0b00000000;
 0002           ; void main(void)
 0002           ;  {
 0002                   .dbline 21
 0002           ;       unsigned int intTemp;
 0002           ;       unsigned char strTemp[5]={0},i;
 0002 80E0              ldi R24,<L2
 0004 90E0              ldi R25,>L2
 0006 FE01              movw R30,R28
 0008 05E0              ldi R16,5
 000A 10E0              ldi R17,0
 000C FA93              st -y,R31
 000E EA93              st -y,R30
 0010 9A93              st -y,R25
 0012 8A93              st -y,R24
 0014 00D0              rcall asgncblk
 0016                   .dbline 22
 0016           ;       unsigned char *pStr=strTemp;
 0016 AE01              movw R20,R28
 0018                   .dbline 23
 0018           ;       OSCCAL=0x8e;//内部振荡器校正字,需要使用Ponygrog测试
 0018 8EE8              ldi R24,142
 001A 81BF              out 0x31,R24
 001C                   .dbline 25
 001C           ;       //TCXO评估板上的TQFP上为0x8e,而DIP28的为0xa5
 001C           ;       uart_init();//初始化USRART
 001C 00D0              rcall _uart_init
 001E                   .dbline 26
 001E           ;       puts("欢迎进入TCXO评估板调试程序");
 001E 00E0              ldi R16,<L3
 0020 10E0              ldi R17,>L3
 0022 00D0              rcall _puts
 0024                   .dbline 27
 0024           ;       timer0_init();//初始化定时器
 0024 00D0              rcall _timer0_init
 0026                   .dbline 28
 0026           ;       pwm1_init();//初始化PWM输出
 0026 00D0              rcall _pwm1_init
 0028                   .dbline 29
 0028           ;       adc_init();//初始化ADC
 0028 00D0              rcall _adc_init
 002A                   .dbline 30
 002A           ;       int_init();//int0,int1中断使能
 002A 00D0              rcall _int_init
 002C                   .dbline 31
 002C           ;       TWI_init();
 002C 00D0              rcall _TWI_init
 002E                   .dbline 32
 002E           ;       SEI();//开放全局中断
 002E 7894              sei
 0030                   .dbline 33
 0030           ;       OCR1A=655;//0.8v
 0030 8FE8              ldi R24,655
 0032 92E0              ldi R25,2
 0034 9BBD              out 0x2b,R25
 0036 8ABD              out 0x2a,R24
 0038                   .dbline 34
 0038           ;       OCR1B=2459;//3v
 0038 8BE9              ldi R24,2459
 003A 99E0              ldi R25,9
 003C 99BD              out 0x29,R25
 003E 88BD              out 0x28,R24
 0040                   .dbline 36
 0040           ; 
 0040           ;       i2c_write(0x12,0x11);//写入外部EEPROM数据
 0040 21E1              ldi R18,17
 0042 02E1              ldi R16,18
 0044 00D0              rcall _i2c_write
 0046                   .dbline 37
 0046           ;       puts("数据已经写入");
 0046 00E0              ldi R16,<L4
 0048 10E0              ldi R17,>L4
 004A 00D0              rcall _puts
 004C 36C0              rjmp L6
 004E           L5:
 004E                   .dbline 55
 004E           ;       
 004E           ;       /******************从机的数据发送尚未完成*************************************
 004E           ;       intTemp=(int)i2c_read((unsigned char)intTemp);//读取外部EEPROM数据
 004E           ; 
 004E           ;       pStr+=3;//回到指针尾部,因为数据先计算出个位数(需将数据转换为BCD码输出)
 004E           ;       for(i=4;i!=0;i--)
 004E           ;        {
 004E           ;               *pStr=intTemp%10+48;
 004E           ;               intTemp/=10;
 004E           ;               pStr--;
 004E           ;        }
 004E           ;       pStr=strTemp;
 004E           ;       puts(pStr);
 004E           ;       puts("数据读完");
 004E           ;       *****************************************************************************/
 004E           ;       
 004E           ;       while(1)
 004E           ;        {
 004E                   .dbline 56
 004E           ;               if(ExtendRomRW&0b00000010)
 004E 20900000          lds R2,_ExtendRomRW
 0052 21FE              sbrs R2,1
 0054 24C0              rjmp L8
 0056                   .dbline 57
 0056           ;                {
 0056                   .dbline 58
 0056           ;                       intTemp=(int)i2c_read(ExtendRomAddr);//读取外部EEPROM数据
 0056 00910100          lds R16,_ExtendRomAddr
 005A 00D0              rcall _i2c_read
 005C A02E              mov R10,R16
 005E BB24              clr R11
 0060                   .dbline 60
 0060           ; 
 0060           ;                       pStr+=3;//回到指针尾部,因为数据先计算出个位数(需将数据转换为BCD码输出)
 0060 4D5F              subi R20,253  ; offset = 3
 0062 5F4F              sbci R21,255
 0064                   .dbline 61
 0064           ;                       for(i=4;i!=0;i--)
 0064 64E0              ldi R22,4
 0066 10C0              rjmp L13
 0068           L10:
 0068                   .dbline 62
 0068                   .dbline 63
 0068 2AE0              ldi R18,10
 006A 30E0              ldi R19,0
 006C 8501              movw R16,R10
 006E 00D0              rcall mod16u
 0070 C801              movw R24,R16
 0072 C096              adiw R24,48
 0074 FA01              movw R30,R20
 0076 8083              std z+0,R24
 0078                   .dbline 64
 0078 2AE0              ldi R18,10
 007A 30E0              ldi R19,0
 007C 8501              movw R16,R10
 007E 00D0              rcall div16u
 0080 5801              movw R10,R16
 0082                   .dbline 65
 0082 4150              subi R20,1
 0084 5040              sbci R21,0
 0086                   .dbline 66
 0086           L11:
 0086                   .dbline 61
 0086 6A95              dec R22
 0088           L13:
 0088                   .dbline 61
 0088 6623              tst R22
 008A 71F7              brne L10
 008C                   .dbline 67
 008C           ;                        {
 008C           ;                               *pStr=intTemp%10+48;
 008C           ;                               intTemp/=10;
 008C           ;                               pStr--;
 008C           ;                        }
 008C           ;                       pStr=strTemp;
 008C AE01              movw R20,R28
 008E                   .dbline 68
 008E           ;                       puts(pStr);
 008E 8A01              movw R16,R20
 0090 00D0              rcall _puts
 0092                   .dbline 69
 0092           ;                       ExtendRomRW&=0b11111101;
 0092 80910000          lds R24,_ExtendRomRW
 0096 8D7F              andi R24,253
 0098 80930000          sts _ExtendRomRW,R24
 009C                   .dbline 70
 009C           ;                }
 009C 0EC0              rjmp L9
 009E           L8:
 009E                   .dbline 71
 009E           ;               else if(ExtendRomRW&0b00000100)
 009E 20900000          lds R2,_ExtendRomRW
 00A2 22FE              sbrs R2,2
 00A4 0AC0              rjmp L14
 00A6                   .dbline 72
 00A6           ;                {
 00A6                   .dbline 73
 00A6           ;                       i2c_write(ExtendRomVal,ExtendRomAddr);//写入外部EEPROM数据
 00A6 20910100          lds R18,_ExtendRomAddr
 00AA 00910000          lds R16,_ExtendRomVal
 00AE 00D0              rcall _i2c_write
 00B0                   .dbline 74
 00B0           ;                       ExtendRomRW&=0b11111011;
 00B0 80910000          lds R24,_ExtendRomRW
 00B4 8B7F              andi R24,251
 00B6 80930000          sts _ExtendRomRW,R24
 00BA                   .dbline 75
 00BA           ;                }
 00BA           L14:
 00BA           L9:
 00BA                   .dbline 77
 00BA           L6:
 00BA                   .dbline 54
 00BA C9CF              rjmp L5
 00BC           X0:
 00BC                   .dbline -2
 00BC           L1:
 00BC 2596              adiw R28,5
 00BE                   .dbline 0 ; func end
 00BE 0895              ret
 00C0                   .dbsym l strTemp 0 A[5:5]c
 00C0                   .dbsym r i 22 c
 00C0                   .dbsym r intTemp 10 i
 00C0                   .dbsym r pStr 20 pc
 00C0                   .dbend
                        .area bss(ram, con, rel)
 0000                   .dbfile G:\Mega8程序\TCXO评估板\Main\Main.c
 0000           _ExtendRomVal::
 0000                   .blkb 1
 0001                   .dbsym e ExtendRomVal _ExtendRomVal c
 0001           _ExtendRomAddr::
 0001                   .blkb 1
 0002                   .dbsym e ExtendRomAddr _ExtendRomAddr c
                        .area data(ram, con, rel)
 0001                   .dbfile G:\Mega8程序\TCXO评估板\Main\Main.c
 0001           L4:
 0001                   .blkb 13
                        .area idata
 0001 CAFDBEDDD2D1BEADD0B4C8EB00        .byte 202,253,190,221,210,209,190,173,208,180,200,235,0
                        .area data(ram, con, rel)
 000E                   .dbfile G:\Mega8程序\TCXO评估板\Main\Main.c
 000E           L3:
 000E                   .blkb 27
                        .area idata
 000E BBB6D3ADBDF8C8EB5443584FC6C0B9C0  .byte 187,182,211,173,189,248,200,235,'T,'C,'X,'O,198,192,185,192
 001E B0E5B5F7CAD4B3CCD0F200    .byte 176,229,181,247,202,212,179,204,208,242,0
                        .area data(ram, con, rel)
 0029                   .dbfile G:\Mega8程序\TCXO评估板\Main\Main.c

⌨️ 快捷键说明

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