📄 m8mpt.lis
字号:
.module M8MPt.c
.area data(ram, con, rel)
0000 _TXADFG::
0000 .blkb 1
.area idata
0000 00 .byte 0
.area data(ram, con, rel)
0001 .dbfile E:\m8com\M8MPt.c
0001 .dbsym e TXADFG _TXADFG c
0001 _SlaveCR::
0001 .blkb 1
.area idata
0001 00 .byte 0
.area data(ram, con, rel)
0002 .dbfile E:\m8com\M8MPt.c
0002 .dbsym e SlaveCR _SlaveCR c
0002 _TXINTMAX::
0002 .blkb 1
.area idata
0002 01 .byte 1
.area data(ram, con, rel)
0003 .dbfile E:\m8com\M8MPt.c
0003 .dbsym e TXINTMAX _TXINTMAX c
0003 _TXINTFG::
0003 .blkb 1
.area idata
0003 00 .byte 0
.area data(ram, con, rel)
0004 .dbfile E:\m8com\M8MPt.c
0004 .dbsym e TXINTFG _TXINTFG c
0004 _RXINTMAX::
0004 .blkb 1
.area idata
0004 10 .byte 16
.area data(ram, con, rel)
0005 .dbfile E:\m8com\M8MPt.c
0005 .dbsym e RXINTMAX _RXINTMAX c
0005 _RXINTCR::
0005 .blkb 1
.area idata
0005 00 .byte 0
.area data(ram, con, rel)
0006 .dbfile E:\m8com\M8MPt.c
0006 .dbsym e RXINTCR _RXINTCR c
0006 _RXINTFG::
0006 .blkb 1
.area idata
0006 00 .byte 0
.area data(ram, con, rel)
0007 .dbfile E:\m8com\M8MPt.c
0007 .dbsym e RXINTFG _RXINTFG c
0007 _TXbufP::
0007 .blkb 1
.area idata
0007 00 .byte 0
.area data(ram, con, rel)
0008 .dbfile E:\m8com\M8MPt.c
0008 .dbsym e TXbufP _TXbufP c
0008 _RXbufP::
0008 .blkb 1
.area idata
0008 00 .byte 0
.area data(ram, con, rel)
0009 .dbfile E:\m8com\M8MPt.c
0009 .dbsym e RXbufP _RXbufP c
0009 _RXbufPmax::
0009 .blkb 1
.area idata
0009 0B .byte 11
.area data(ram, con, rel)
000A .dbfile E:\m8com\M8MPt.c
000A .dbsym e RXbufPmax _RXbufPmax c
000A _RXERROR::
000A .blkb 1
.area idata
000A 00 .byte 0
.area data(ram, con, rel)
000B .dbfile E:\m8com\M8MPt.c
000B .dbsym e RXERROR _RXERROR c
000B _WaitCR0::
000B .blkb 1
.area idata
000B 00 .byte 0
.area data(ram, con, rel)
000C .dbfile E:\m8com\M8MPt.c
000C .dbsym e WaitCR0 _WaitCR0 c
000C _WaitCR1::
000C .blkb 1
.area idata
000C 00 .byte 0
.area data(ram, con, rel)
000D .dbfile E:\m8com\M8MPt.c
000D .dbsym e WaitCR1 _WaitCR1 c
.area text(rom, con, rel)
0000 .dbfile E:\m8com\M8MPt.c
0000 .dbfunc e SoftTimer _SoftTimer fV
.even
0000 _SoftTimer::
0000 .dbline -1
0000 .dbline 63
0000 .dbline 64
0000 80910B00 lds R24,_WaitCR0
0004 8F5F subi R24,255 ; addi 1
0006 80930B00 sts _WaitCR0,R24
000A .dbline 65
000A 8EEF ldi R24,254
000C 20900B00 lds R2,_WaitCR0
0010 8215 cp R24,R2
0012 40F4 brsh L2
0014 .dbline 66
0014 .dbline 67
0014 2224 clr R2
0016 20920B00 sts _WaitCR0,R2
001A .dbline 68
001A 80910C00 lds R24,_WaitCR1
001E 8F5F subi R24,255 ; addi 1
0020 80930C00 sts _WaitCR1,R24
0024 .dbline 69
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 72
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 TXADDRESS UCSRB|=(1<<TXB8);TXADFG=0;
0026 ; #define TXDATA UCSRB&=~(1<<TXB8);TXADFG=1;
0026 ; //
0026 ; #define TRFG0 0xFE
0026 ; #define TRFG1 0xFD
0026 ; #define TRFG2 0xF1
0026 ; #define TRFG3 0xF0
0026 ; //最大子板数
0026 ; #define SlaveBMAX 15
0026 ; //////////////////////////////
0026 ; //////////////////////////////
0026 ; unsigned char TXADFG=0;
0026 ;
0026 ; unsigned char SlaveEN[17];
0026 ; unsigned char SlaveCR=0; //子板编号计数器,当作物理地址
0026 ; unsigned char TXINTMAX=1;//下行发送中断次数控制值
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[30]; //发送缓冲区
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 ; 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 73
0026 ; WaitCR0=0;
0026 2224 clr R2
0028 20920B00 sts _WaitCR0,R2
002C .dbline 74
002C ; WaitCR1=0;
002C 20920C00 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 78
0032 ; }
0032 ;
0032 ; void watchdog_init(void)
0032 ; {
0032 .dbline 79
0032 ; WDR();
0032 A895 wdr
0034 .dbline 80
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 84
003A ; }
003A ;
003A ; void Delay_1ms(void)
003A ; {
003A .dbline 87
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 89
0040 L8:
0040 .dbline 87
0040 0F5F subi R16,255 ; offset = 1
0042 1F4F sbci R17,255
0044 L10:
0044 .dbline 87
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 93
0052 ;
0052 ; ;
0052 ; }
0052 ;
0052 ; void delayXms(unsigned int n)
0052 ; {
0052 .dbline 94
0052 ; unsigned int i=0;
0052 4427 clr R20
0054 5527 clr R21
0056 03C0 rjmp L13
0058 L12:
0058 .dbline 96
0058 .dbline 97
0058 F0DF rcall _Delay_1ms
005A .dbline 98
005A 4F5F subi R20,255 ; offset = 1
005C 5F4F sbci R21,255
005E .dbline 99
005E L13:
005E .dbline 95
005E ; while(i<n)
005E 4617 cp R20,R22
0060 5707 cpc R21,R23
0062 D0F3 brlo L12
0064 .dbline -2
0064 L11:
0064 00D0 rcall pop_gset2
0066 .dbline 0 ; func end
0066 0895 ret
0068 .dbsym r i 20 i
0068 .dbsym r n 22 i
0068 .dbend
0068 .dbfunc e port_init _port_init fV
.even
0068 _port_init::
0068 .dbline -1
0068 .dbline 104
0068 ; {
0068 ; Delay_1ms();
0068 ; i++;
0068 ; }
0068 ; }
0068 ;
0068 ;
0068 ; void port_init(void)
0068 ; {
0068 .dbline 107
0068 ;
0068 ;
0068 ; PORTB=0xFF; //PB set to 1
0068 8FEF ldi R24,255
006A 88BB out 0x18,R24
006C .dbline 108
006C ; DDRB=0xFF;
006C 87BB out 0x17,R24
006E .dbline 110
006E ;
006E ; PORTC=0xFF; //PC set to 1
006E 85BB out 0x15,R24
0070 .dbline 111
0070 ; DDRC=0x00; //
0070 2224 clr R2
0072 24BA out 0x14,R2
0074 .dbline 113
0074 ;
0074 ; PORTD=0xFF; //PD set to 1
0074 82BB out 0x12,R24
0076 .dbline 114
0076 ; DDRD=0x12; //PD0:RXD PD1:TXD PD2:DI0 PD3:DI1
0076 82E1 ldi R24,18
0078 81BB out 0x11,R24
007A .dbline 118
007A ; //PD4:DI2 PD5:DI3
007A ; //OUTDEON;
007A ;
007A ; SFIOR&=~(1<<PUD); //OPEN UP LINK
007A 80B7 in R24,0x30
007C 8B7F andi R24,251
007E 80BF out 0x30,R24
0080 .dbline 122
0080 ; //MCUCR|=(1<<ISC11); //Down edge int1
0080 ; //GICR=(1<<INT1); //enable INT1
0080 ;
0080 ; delayXms(10); //delay 1s
0080 0AE0 ldi R16,10
0082 10E0 ldi R17,0
0084 E4DF rcall _delayXms
0086 .dbline -2
0086 L15:
0086 .dbline 0 ; func end
0086 0895 ret
0088 .dbend
0088 .dbfunc e uart_init _uart_init fV
.even
0088 _uart_init::
0088 .dbline -1
0088 .dbline 126
0088 ; }
0088 ; //////////////////////////UART INIT
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -