?? cy2198tr.lst
字號:
__start:
__text_start:
002A E5CF LDI R28,0x5F
002B E0D4 LDI R29,4
002C BFCD OUT 0x3D,R28
002D BFDE OUT 0x3E,R29
002E 51C0 SUBI R28,0x10
002F 40D0 SBCI R29,0
0030 EA0A LDI R16,0xAA
0031 8308 STD Y+0,R16
0032 2400 CLR R0
0033 E6E0 LDI R30,0x60
0034 E0F0 LDI R31,0
0035 E010 LDI R17,0
0036 36E0 CPI R30,0x60
0037 07F1 CPC R31,R17
0038 F011 BEQ 0x003B
0039 9201 ST R0,Z+
003A CFFB RJMP 0x0036
003B 8300 STD Z+0,R16
003C E5E4 LDI R30,0x54
003D E0F0 LDI R31,0
003E E6A0 LDI R26,0x60
003F E0B0 LDI R27,0
0040 E010 LDI R17,0
0041 35E4 CPI R30,0x54
0042 07F1 CPC R31,R17
0043 F021 BEQ 0x0048
0044 95C8 LPM
0045 9631 ADIW R30,1
0046 920D ST R0,X+
0047 CFF9 RJMP 0x0041
0048 940E004B CALL _main
_exit:
004A CFFF RJMP _exit
FILE: D:\Test\Movetion\Cy2198TR\main.c
(0001) /*
(0002) Cy2198TR-B Program
(0003) by Chenxi
(0004) */
(0005) #include <iom16v.h>
(0006)
(0007) /*====================MACRO DEFINE============================================*/
(0008) /*define system as transmitter or receiver*/
(0009) /*
(0010) transmitter -- 1
(0011) receiver -- 0
(0012) */
(0013) #define WIRELESS_TRANSIMIT_SEL 1
(0014)
(0015) /*----------ports---------*/
(0016) #define W_EN 3
(0017) #define W_BUSY 2
(0018) #define W_RT 1
(0019) #define W_FS 0
(0020) #define W_RXD 0
(0021) #define W_TXD 1
(0022)
(0023) #define WIRELESS_EN() PORTC &= (~(1 << W_EN))
(0024) #define WIRELESS_REC_EN() PORTC |= (1 << W_RT)
(0025) #define WIRELESS_SEND_EN() PORTC &= (~(1 << W_RT))
(0026) #define WIRELESS_IS_BUSY PINC & (1 << W_BUSY)
(0027) #define WIRELESS_FREQUENCY_SEL() PORTC |= (1 << W_FS)
(0028)
(0029) /*============================================================================*/
(0030) /*=================FUNCTIONS DECLARATION======================================*/
(0031) void Port_Init(void);
(0032) void USART_Init(void);
(0033) void Wireless_Init(void);
(0034) void USART_Transmit(unsigned char ucbyte);
(0035) void Wireless_TransmitByte(unsigned char ucbyte);
(0036) void Delay_nms(unsigned int n);
(0037) unsigned char USART_Receive(void);
(0038) /*============================================================================*/
(0039)
(0040) /*================== MAIN ====================================================*/
(0041) int main(void)
(0042) {
(0043) Wireless_Init();
_main:
004B D02C RCALL _Wireless_Init
004C C00A RJMP 0x0057
(0044) while(1)
(0045) {
(0046) Wireless_TransmitByte(0x01);
004D E001 LDI R16,1
004E D034 RCALL _Wireless_TransmitByte
(0047) Delay_nms(1000);
004F EE08 LDI R16,0xE8
0050 E013 LDI R17,3
0051 D03F RCALL _Delay_nms
(0048) Wireless_TransmitByte(0x02);
0052 E002 LDI R16,2
0053 D02F RCALL _Wireless_TransmitByte
(0049) Delay_nms(1000);
0054 EE08 LDI R16,0xE8
0055 E013 LDI R17,3
0056 D03A RCALL _Delay_nms
0057 CFF5 RJMP 0x004D
(0050) }
(0051) return 0;
0058 2700 CLR R16
0059 2711 CLR R17
005A 9508 RET
(0052) }
(0053) /*============================================================================*/
(0054)
(0055) /*===============FUNCTIONS HERE===============================================*/
(0056) /*--------------Initialize Ports--------------------*/
(0057) void Port_Init(void)
(0058) {
(0059) PORTB = 0x01;
_Port_Init:
005B E081 LDI R24,1
005C BB88 OUT 0x18,R24
(0060) DDRB = 0xFF;
005D EF8F LDI R24,0xFF
005E BB87 OUT 0x17,R24
(0061) DDRC |= (1 << W_EN) | (1 << W_RT) | (1 << W_FS);
005F B384 IN R24,0x14
0060 608B ORI R24,0xB
0061 BB84 OUT 0x14,R24
(0062) DDRC |= ~(1 << W_BUSY);
0062 B384 IN R24,0x14
0063 6F8B ORI R24,0xFB
0064 BB84 OUT 0x14,R24
(0063) PORTC = (1 << W_EN) | (1 << W_RT) | (1 << W_BUSY) | (1 << W_FS);
0065 E08F LDI R24,0xF
0066 BB85 OUT 0x15,R24
(0064) DDRD |= (1 << W_TXD);
0067 9A89 SBI 0x11,1
(0065) DDRD &= ~(1 << W_RXD);
0068 9888 CBI 0x11,0
(0066) PORTD |= (1 << W_TXD) | (1 << W_RXD);
0069 B382 IN R24,0x12
006A 6083 ORI R24,3
006B BB82 OUT 0x12,R24
(0067) }
006C 9508 RET
(0068)
(0069) /*--------------UART0 initialize----------------*/
(0070) /*baudrate: 19200*/
(0071) void USART_Init(void)
(0072) {
(0073) UCSRB = 0x00;
_USART_Init:
006D 2422 CLR R2
006E B82A OUT 0x0A,R2
(0074) UCSRA = 0x00;
006F B82B OUT 0x0B,R2
(0075) UCSRC = (1 <<URSEL) | 0x06;
0070 E886 LDI R24,0x86
0071 BD80 OUT 0x20,R24
(0076) UBRRL= 25;
0072 E189 LDI R24,0x19
0073 B989 OUT 0x09,R24
(0077) UBRRH= 0x00;
0074 BC20 OUT 0x20,R2
(0078) UCSRB = 0x98;
0075 E988 LDI R24,0x98
0076 B98A OUT 0x0A,R24
(0079) }
0077 9508 RET
(0080)
(0081) /*----------------initialize system-----------------*/
(0082) void Wireless_Init(void)
(0083) {
(0084) asm("cli");
_Wireless_Init:
0078 94F8 BCLR 7
(0085) Port_Init();
0079 DFE1 RCALL _Port_Init
(0086) USART_Init();
007A DFF2 RCALL _USART_Init
(0087)
(0088) #if WIRELESS_TRANSIMIT_SEL
(0089) WIRELESS_SEND_EN();
007B 98A9 CBI 0x15,1
(0090) #else
(0091) WIRELESS_RECEIVE_EN();
(0092) #endif
(0093)
(0094) WIRELESS_EN();
007C 98AB CBI 0x15,3
(0095) asm("sei");
007D 9478 BSET 7
(0096) }
007E 9508 RET
(0097)
(0098) /*--------------UART0 transmit a byte----------------*/
(0099) void USART_Transmit( unsigned char ucbyte )
(0100) {
(0101) while ( !( UCSRA & (1<<UDRE)));
_USART_Transmit:
ucbyte --> R16
007F 9B5D SBIS 0x0B,5
0080 CFFE RJMP _USART_Transmit
(0102) UDR = ucbyte;
0081 B90C OUT 0x0C,R16
(0103) }
0082 9508 RET
_Wireless_TransmitByte:
ucbyte --> R20
0083 940E00B9 CALL push_gset1
0085 2F40 MOV R20,R16
(0104)
(0105) /*------------wireless transmit a byte-------------*/
(0106) void Wireless_TransmitByte(unsigned char ucbyte)
(0107) {
(0108) while(!(WIRELESS_IS_BUSY));
0086 9B9A SBIS 0x13,2
0087 CFFE RJMP 0x0086
(0109) USART_Transmit(ucbyte);
0088 2F04 MOV R16,R20
0089 DFF5 RCALL _USART_Transmit
(0110) USART_Transmit(0x0D);
008A E00D LDI R16,0xD
008B DFF3 RCALL _USART_Transmit
(0111) USART_Transmit(0x0A);
008C E00A LDI R16,0xA
008D DFF1 RCALL _USART_Transmit
(0112) }
008E 940E00BC CALL pop_gset1
0090 9508 RET
_Delay_nms:
i --> R20
j --> R22
n --> R16
0091 940E00D0 CALL push_gset2
(0113)
(0114) /*--------------delaly function---------------------*/
(0115) void Delay_nms(unsigned int n) //N ms
(0116) {
(0117) unsigned int i = 0;
0093 2744 CLR R20
0094 2755 CLR R21
(0118) unsigned int j = 0;
0095 2766 CLR R22
0096 2777 CLR R23
(0119) for (i = 0 ; i < n ; i ++)
0097 C00B RJMP 0x00A3
(0120) {
(0121) for (j = 0 ; j < 1140 ;j ++);
0098 2766 CLR R22
0099 2777 CLR R23
009A C002 RJMP 0x009D
009B 5F6F SUBI R22,0xFF
009C 4F7F SBCI R23,0xFF
009D 3764 CPI R22,0x74
009E E0E4 LDI R30,4
009F 077E CPC R23,R30
00A0 F3D0 BCS 0x009B
00A1 5F4F SUBI R20,0xFF
00A2 4F5F SBCI R21,0xFF
00A3 1740 CP R20,R16
00A4 0751 CPC R21,R17
00A5 F390 BCS 0x0098
(0122) }
(0123) }
00A6 940E00B6 CALL pop_gset2
00A8 9508 RET
(0124)
(0125) /*--------------USART receive a byte---------------------*/
(0126) unsigned char USART_Receive(void)
(0127) {
(0128) while(!(UCSRA&(1<<RXC)));
_USART_Receive:
00A9 9B5F SBIS 0x0B,7
00AA CFFE RJMP _USART_Receive
(0129) return UDR;
00AB B10C IN R16,0x0C
00AC 9508 RET
_uart0_rx_isr:
00AD 922A ST R2,-Y
00AE B62F IN R2,0x3F
00AF 922A ST R2,-Y
(0130) }
(0131)
(0132) /*--------------wireless receive -------------------------*/
(0133) #pragma interrupt_handler uart0_rx_isr:12
(0134) void uart0_rx_isr(void)
(0135) {
(0136) //add receiver code here......
(0137) PORTB = UDR;
00B0 B02C IN R2,0x0C
00B1 BA28 OUT 0x18,R2
(0138) }
FILE: <library>
00B2 9029 LD R2,Y+
00B3 BE2F OUT 0x3F,R2
00B4 9029 LD R2,Y+
00B5 9518 RETI
pop_gset2:
00B6 E0E2 LDI R30,2
00B7 940C00BD JMP pop
push_gset1:
00B9 935A ST R21,-Y
00BA 934A ST R20,-Y
00BB 9508 RET
pop_gset1:
00BC E0E1 LDI R30,1
pop:
00BD 9149 LD R20,Y+
00BE 9159 LD R21,Y+
00BF FDE0 SBRC R30,0
00C0 9508 RET
00C1 9169 LD R22,Y+
00C2 9179 LD R23,Y+
00C3 FDE1 SBRC R30,1
00C4 9508 RET
00C5 90A9 LD R10,Y+
00C6 90B9 LD R11,Y+
00C7 FDE2 SBRC R30,2
00C8 9508 RET
00C9 90C9 LD R12,Y+
00CA 90D9 LD R13,Y+
00CB FDE3 SBRC R30,3
00CC 9508 RET
00CD 90E9 LD R14,Y+
00CE 90F9 LD R15,Y+
00CF 9508 RET
push_gset2:
00D0 937A ST R23,-Y
00D1 936A ST R22,-Y
00D2 940C00B9 JMP push_gset1
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -