📄 m8sp01.lis
字号:
.module M8SP01.c
.area data(ram, con, rel)
0000 _TRADFG::
0000 .blkb 1
.area idata
0000 00 .byte 0
.area data(ram, con, rel)
0001 .dbfile E:\m8com\M8SP01.c
0001 .dbsym e TRADFG _TRADFG c
0001 _RDHIS::
0001 .blkb 1
.area idata
0001 FF .byte 255
.area data(ram, con, rel)
0002 .dbfile E:\m8com\M8SP01.c
0002 .dbsym e RDHIS _RDHIS c
0002 _SlaveCR::
0002 .blkb 1
.area idata
0002 00 .byte 0
.area data(ram, con, rel)
0003 .dbfile E:\m8com\M8SP01.c
0003 .dbsym e SlaveCR _SlaveCR c
0003 _TXINTMAX::
0003 .blkb 1
.area idata
0003 0C .byte 12
.area data(ram, con, rel)
0004 .dbfile E:\m8com\M8SP01.c
0004 .dbsym e TXINTMAX _TXINTMAX c
0004 _TXINTFG::
0004 .blkb 1
.area idata
0004 00 .byte 0
.area data(ram, con, rel)
0005 .dbfile E:\m8com\M8SP01.c
0005 .dbsym e TXINTFG _TXINTFG c
0005 _RXINTMAX::
0005 .blkb 1
.area idata
0005 10 .byte 16
.area data(ram, con, rel)
0006 .dbfile E:\m8com\M8SP01.c
0006 .dbsym e RXINTMAX _RXINTMAX c
0006 _RXINTCR::
0006 .blkb 1
.area idata
0006 00 .byte 0
.area data(ram, con, rel)
0007 .dbfile E:\m8com\M8SP01.c
0007 .dbsym e RXINTCR _RXINTCR c
0007 _RXINTFG::
0007 .blkb 1
.area idata
0007 00 .byte 0
.area data(ram, con, rel)
0008 .dbfile E:\m8com\M8SP01.c
0008 .dbsym e RXINTFG _RXINTFG c
0008 _TXbufP::
0008 .blkb 1
.area idata
0008 00 .byte 0
.area data(ram, con, rel)
0009 .dbfile E:\m8com\M8SP01.c
0009 .dbsym e TXbufP _TXbufP c
0009 _RXbufP::
0009 .blkb 1
.area idata
0009 00 .byte 0
.area data(ram, con, rel)
000A .dbfile E:\m8com\M8SP01.c
000A .dbsym e RXbufP _RXbufP c
000A _RXbufPmax::
000A .blkb 1
.area idata
000A 0B .byte 11
.area data(ram, con, rel)
000B .dbfile E:\m8com\M8SP01.c
000B .dbsym e RXbufPmax _RXbufPmax c
000B _RXERROR::
000B .blkb 1
.area idata
000B 00 .byte 0
.area data(ram, con, rel)
000C .dbfile E:\m8com\M8SP01.c
000C .dbsym e RXERROR _RXERROR c
000C _WaitCR0::
000C .blkb 1
.area idata
000C 00 .byte 0
.area data(ram, con, rel)
000D .dbfile E:\m8com\M8SP01.c
000D .dbsym e WaitCR0 _WaitCR0 c
000D _WaitCR1::
000D .blkb 1
.area idata
000D 00 .byte 0
.area data(ram, con, rel)
000E .dbfile E:\m8com\M8SP01.c
000E .dbsym e WaitCR1 _WaitCR1 c
000E _SLSTEP::
000E .blkb 1
.area idata
000E 0A .byte 10
.area data(ram, con, rel)
000F .dbfile E:\m8com\M8SP01.c
000F .dbsym e SLSTEP _SLSTEP c
.area text(rom, con, rel)
0000 .dbfile E:\m8com\M8SP01.c
0000 .dbfunc e SoftTimer _SoftTimer fV
.even
0000 _SoftTimer::
0000 .dbline -1
0000 .dbline 65
0000 .dbline 66
0000 80910C00 lds R24,_WaitCR0
0004 8F5F subi R24,255 ; addi 1
0006 80930C00 sts _WaitCR0,R24
000A .dbline 67
000A 8EEF ldi R24,254
000C 20900C00 lds R2,_WaitCR0
0010 8215 cp R24,R2
0012 40F4 brsh L2
0014 .dbline 68
0014 .dbline 69
0014 2224 clr R2
0016 20920C00 sts _WaitCR0,R2
001A .dbline 70
001A 80910D00 lds R24,_WaitCR1
001E 8F5F subi R24,255 ; addi 1
0020 80930D00 sts _WaitCR1,R24
0024 .dbline 71
0024 L2:
0024 .dbline -2
0024 L1:
0024 .dbline 0 ; func end
0024 0895 ret
0026 .dbend
0026 .dbfunc e SoftTimerStart _SoftTimerStart fV
.even
0026 _SoftTimerStart::
0026 .dbline -1
0026 .dbline 74
0026 ; //////////从机
0026 ;
0026 ; #include <iom8v.h>
0026 ; #include <macros.h>
0026 ; //ISARM pro
0026 ; #define OUTLED1OFF PORTB|=0x01 //for
0026 ; #define OUTLED1ON PORTB&=~0x01
0026 ; #define OUTLED2OFF PORTB|=0x02 //For
0026 ; #define OUTLED2ON PORTB&=~0x02
0026 ; #define OUTLED2Pulse PORTB^=0x02
0026 ;
0026 ; #define OUTLED3OFF PORTB|=0x04 //For
0026 ; #define OUTLED3ON PORTB&=~0x04
0026 ; #define OUTLED3Pulse PORTB^=0x04
0026 ; #define OUTLED4OFF PORTB|=0x08 //For
0026 ; #define OUTLED4ON PORTB&=~0x08
0026 ; #define OUTLED4Pulse PORTB^=0x08
0026 ;
0026 ; #define OUTDEON PORTD|=0x10
0026 ; #define OUTDEOFF PORTD&=~0x10
0026 ;
0026 ; #define KB0 (PINC&0x01)
0026 ; #define KB1 (PINC&0x02)
0026 ;
0026 ;
0026 ; ///UART///
0026 ; #define TXENABLE UCSRB&=~(1<<RXEN);UCSRB|=(1<<TXEN);
0026 ; #define RXENABLE UCSRB&=~(1<<TXEN);UCSRB|=(1<<RXEN);
0026 ; #define RXADDRESS UCSRA|=(1<<MPCM);TRADFG=0;
0026 ; #define RXDATA UCSRA&=~(1<<MPCM);TRADFG=1;
0026 ; //
0026 ; #define TRFG0 0xFE
0026 ; #define TRFG1 0xFD
0026 ; #define TRFG2 0xF1
0026 ; #define TRFG3 0xF0
0026 ; //子板编号
0026 ; #define SlaveAdress 5
0026 ; //////////////////////////////
0026 ; unsigned char TRADFG=0; //0收地址,1收数据
0026 ; unsigned char RDHIS=0xff;
0026 ;
0026 ; unsigned char SlaveCR=0; //子板编号计数器,当作物理地址
0026 ; unsigned char TXINTMAX=12;//下行发送中断次数控制值
0026 ; //unsigned char TXINTCR=0;//下行发送中断次数计数器
0026 ; unsigned char TXINTFG=0;//下行发送中断次数完成标志
0026 ; unsigned char RXINTMAX=16;//下行发送中断次数控制值
0026 ; unsigned char RXINTCR=0;//下行发送中断次数计数器
0026 ; unsigned char RXINTFG=0;//下行发送中断次数完成标志
0026 ;
0026 ; unsigned char TXBUF[16]; //发送缓冲区
0026 ; unsigned char RXBUF[30]; //接收缓冲区
0026 ; unsigned char TXbufP=0; //发送缓冲区下标
0026 ; unsigned char RXbufP=0; //接收缓冲区下标
0026 ; unsigned char RXbufPmax=11;//接收数据实际长度
0026 ;
0026 ; unsigned char RXERROR=0;
0026 ; /////Soft Timer
0026 ; unsigned char WaitCR0=0;
0026 ; unsigned char WaitCR1=0;
0026 ;
0026 ; unsigned char SLSTEP=10;
0026 ;
0026 ;
0026 ; void SoftTimer(void)
0026 ; {
0026 ; WaitCR0++;
0026 ; if(WaitCR0>254)
0026 ; {
0026 ; WaitCR0=0;
0026 ; WaitCR1++;
0026 ; }//if(WaitCR0>0)
0026 ; }
0026 ; void SoftTimerStart(void)
0026 ; {
0026 .dbline 75
0026 ; WaitCR0=0;
0026 2224 clr R2
0028 20920C00 sts _WaitCR0,R2
002C .dbline 76
002C ; WaitCR1=0;
002C 20920D00 sts _WaitCR1,R2
0030 .dbline -2
0030 L4:
0030 .dbline 0 ; func end
0030 0895 ret
0032 .dbend
0032 .dbfunc e watchdog_init _watchdog_init fV
.even
0032 _watchdog_init::
0032 .dbline -1
0032 .dbline 80
0032 ; }
0032 ;
0032 ; void watchdog_init(void)
0032 ; {
0032 .dbline 81
0032 ; WDR();
0032 A895 wdr
0034 .dbline 82
0034 ; WDTCR=0x0F ;
0034 8FE0 ldi R24,15
0036 81BD out 0x21,R24
0038 .dbline -2
0038 L5:
0038 .dbline 0 ; func end
0038 0895 ret
003A .dbend
003A .dbfunc e Delay_1ms _Delay_1ms fV
003A ; i -> R16,R17
.even
003A _Delay_1ms::
003A .dbline -1
003A .dbline 86
003A ; }
003A ;
003A ; void Delay_1ms(void)
003A ; {
003A .dbline 89
003A ; unsigned int i;
003A ;
003A ; for (i = 1; i<1140; i++)
003A 01E0 ldi R16,1
003C 10E0 ldi R17,0
003E 02C0 rjmp L10
0040 L7:
0040 .dbline 91
0040 L8:
0040 .dbline 89
0040 0F5F subi R16,255 ; offset = 1
0042 1F4F sbci R17,255
0044 L10:
0044 .dbline 89
0044 0437 cpi R16,116
0046 E4E0 ldi R30,4
0048 1E07 cpc R17,R30
004A D0F3 brlo L7
004C .dbline -2
004C L6:
004C .dbline 0 ; func end
004C 0895 ret
004E .dbsym r i 16 i
004E .dbend
004E .dbfunc e delayXms _delayXms fV
004E ; i -> R20,R21
004E ; n -> R22,R23
.even
004E _delayXms::
004E 00D0 rcall push_gset2
0050 B801 movw R22,R16
0052 .dbline -1
0052 .dbline 95
0052 ;
0052 ; ;
0052 ; }
0052 ;
0052 ; void delayXms(unsigned int n)
0052 ; {
0052 .dbline 96
0052 ; unsigned int i=0;
0052 4427 clr R20
0054 5527 clr R21
0056 03C0 rjmp L13
0058 L12:
0058 .dbline 98
0058 .dbline 99
0058 F0DF rcall _Delay_1ms
005A .dbline 100
005A 4F5F subi R20,255 ; offset = 1
005C 5F4F sbci R21,255
005E .dbline 101
005E L13:
005E .dbline 97
005E ; while(i<n)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -