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

📄 cy2198tr.lst

📁 ATMega16驱动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 + -