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

📄 main.s

📁 主要是通过AMEGAL88 来控制cc1100
💻 S
字号:
	.module main.c
	.area text(rom, con, rel)
	.dbfile H:\work\myWork\AVR-CC1100/protocol.h
	.dbfunc e setPktType _setPktType fc
;         regVal -> R20
;        pktType -> R22
	.even
_setPktType::
	rcall push_gset2
	mov R22,R16
	.dbline -1
	.dbline 27
; /*******************************************************************************************************
;  * Compiler:                   WINAVR                                                             
;  * Target platform:          Atmega88 and Chipcon CC1100                                               
;  * Author:                       陈思                                                                      
;  *******************************************************************************************************
;  *  2007-12-26 13:19:41                                                              
;  ******************************************************************************************************/
; 
; #include "protocol.h"
; 
; #define FOSC  1000000
; #define BAUDRATE  4800
; #define BAUDREG   FOSC/16/BAUDRATE-1 
; #define MAXSIZE 255
; 
; //#pragma interrupt_handler USART_INT:iv_USART0_RX
; //#pragma interrupt_handler REC_PKT:iv_INT0
; 
;  // 表示串口状态的全局变量
; USART_FLAG fUART;
; ChipState fCC1100;
; BYTE RecData[MAXSIZE];
; BYTE RecLen = 0;
; 
;  // USART 接收到一个字节完成中断
; void USART_INT(void)
;  
	.dbline 30
;  
;  {
;     BYTE recByte;
	ldi R16,8
	rcall _spiReadReg
	mov R20,R16
	.dbline 32
; 	USART_RECINT_DISABLE();
; 	 
	tst R22
	brne L2
	.dbline 33
;  	recByte = UDR0;
	.dbline 34
;  	
	ori R20,3
	.dbline 35
;  	if(recByte == 0xAA)
	andi R20,252
	.dbline 36
; 	{
	rjmp L3
L2:
	.dbline 38
;  		if(fUART == USART_IDLE)
; 		  fUART = USART_RECIEVE;
	cpi R22,1
	brne L4
	.dbline 39
; 	}
	.dbline 40
; 	else if(recByte == 0x55)
	ori R20,3
	.dbline 41
; 	{
	andi R20,253
	.dbline 42
; 	    if(fUART == USART_RECIEVE)
	rjmp L5
L4:
	.dbline 45
; 		  fUART = USART_RECIEVE_FINISH;
; 	}
; 	else
	clr R16
	rjmp L1
L5:
L3:
	.dbline 47
; 	{
; 	    if(fUART == USART_RECIEVE)
	mov R18,R20
	ldi R16,8
	rcall _spiWriteReg
	.dbline 50
; 		{
; 		  RecData[RecLen+1] = recByte;
; 		  RecLen ++;
	ldi R16,1
	.dbline -2
L1:
	rcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r regVal 20 c
	.dbsym r pktType 22 c
	.dbend
	.dbfunc e setPktLen _setPktLen fc
;      pktLength -> R20
	.even
_setPktLen::
	rcall push_gset1
	mov R20,R16
	.dbline -1
	.dbline 56
; 		}  
; 	}
; 	
; 	USART_RECINT_ENABLE();			
;  } 
; 
	.dbline 58
; // 检测到数据包的到来,用INT0通知MCU
; void REC_PKT(void)
	ldi R24,1
	cp R24,R20
	brsh L7
	ldi R24,255
	cp R24,R20
	brlo L7
	.dbline 59
; {
	mov R18,R20
	ldi R16,6
	rcall _spiWriteReg
	rjmp L8
L7:
	.dbline 62
;   INT0_DISABLE();   // 关中断
;   
;  // if(fCC1100 == SLEEP)
	clr R16
	rjmp L6
L8:
	.dbline 65
;     spiReceivePacket(RecData,MAXSIZE);
;   
;   EIFR |= (1<<INTF0); // 清中断标志位,并开中断
	ldi R16,1
	.dbline -2
L6:
	rcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r pktLength 20 c
	.dbend
	.dbfunc e setSendType _setSendType fc
;         regVal -> R20
;       sendType -> R22
	.even
_setSendType::
	rcall push_gset2
	mov R22,R16
	.dbline -1
	.dbline 70
;   INT0_ENABLE();
; }
;  		
; void main()
; {
	.dbline 73
;   // 系统初始化部分
;   CLI();
;   WDTCSR = 0x00;
	ldi R16,7
	rcall _spiReadReg
	mov R20,R16
	.dbline 75
;   fUART = USART_IDLE;
;   
	tst R22
	brne L10
	.dbline 76
;   SpiInit();
	.dbline 77
;   cc1100Init();
	ori R20,3
	.dbline 78
;   //GDO2Int();
	andi R20,252
	.dbline 79
;   //GDO2_INT0();
	rjmp L11
L10:
	.dbline 81
;   //serialInit(12);
;   NOP();
	cpi R22,1
	brne L12
	.dbline 82
;   SEI();
	.dbline 83
;   
	ori R20,3
	.dbline 84
;   memset(RecData,0,MAXSIZE);
	andi R20,253
	.dbline 85
;   
	rjmp L13
L12:
	.dbline 87
;   setPktType(DEFINED_LENGTH);
;   setAddress(0x00);
	cpi R22,2
	brne L14
	.dbline 88
;   setPktLen(0xFF);
	.dbline 89
;   setSendType(NO_ADDRESS);
	ori R20,3
	.dbline 90
;   
	andi R20,254
	.dbline 91
;   spiWriteReg(CC1100_IOCFG0,0x06);
	rjmp L15
L14:
	.dbline 95
;   
;   //initWorMode();
;   
;  /*
	clr R16
	rjmp L9
L15:
L13:
L11:
	.dbline 97
;   while(1)
;   {
	mov R18,R20
	ldi R16,7
	rcall _spiWriteReg
	.dbline 99
;     if(fUART == USART_RECIEVE_FINISH)	
; 	{
	ldi R16,1
	.dbline -2
L9:
	rcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r regVal 20 c
	.dbsym r sendType 22 c
	.dbend
	.dbfunc e setAddress _setAddress fc
;           addr -> R20
	.even
_setAddress::
	rcall push_gset1
	mov R20,R16
	.dbline -1
	.dbline 104
; 	 CLI();
; 	 RecData[0] = RecLen;
; 	 spiSendPacket(RecData,RecLen+1);
; 	 fUART = USART_IDLE;
; 	 
	.dbline 106
; 	 memset(RecData,0,RecLen+1);
; 	 RecLen = 0;
	cpi R20,0
	brlo L17
	ldi R24,255
	cp R24,R20
	brlo L17
	.dbline 107
; 	 
	mov R18,R20
	ldi R16,9
	rcall _spiWriteReg
	rjmp L18
L17:
	.dbline 111
; 	 SEI();
; 	}
;    }  
;   
	clr R16
	rjmp L16
L18:
	.dbline 113
;  */
;   while(1)
	ldi R16,1
	.dbline -2
L16:
	rcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r addr 20 c
	.dbend
	.dbfunc e GDO2Int _GDO2Int fV
	.even
_GDO2Int::
	.dbline -1
	.dbline 119
;   {
;     if(spiReceivePacket(RecData,MAXSIZE))
; 	   break;
;   }
;  
; 
	.dbline 120
;   
	bset 7
	.dbline 122
;   while(1);
;  
	lds R24,105
	ori R24,3
	sts 105,R24
	.dbline 125
; }
; 
; 
	sbi 0x1d,0
	.dbline -2
L19:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e SpiInit _SpiInit fV
	.even
_SpiInit::
	.dbline -1
	.dbline 130
; 
; 
; 
; 
; 
	.dbline 132
; 
; 
	ldi R24,44
	out 0x4,R24
	.dbline 133
; 
	cbi 0x5,3
	.dbline 135
; 
; 
	ldi R24,81
	out 0x2c,R24
	.dbline 137
; 
; 
	in R2,0x2c
	out 0x2c,R2
	.dbline 138
; 
	in R24,0x2c
	andi R24,223
	out 0x2c,R24
	.dbline 140
; 
; 
	cbi 0xa,5
	.dbline -2
L20:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e serialInit _serialInit fV
;       baudrate -> R16,R17
	.even
_serialInit::
	.dbline -1
	.dbline 148
; 
; 
; 
; 
; 
; 
; 
; 
	.dbline 150
; 
; 
	ldi R24,6
	sts 194,R24
	.dbline 152
; 
; 
	movw R2,R16
	mov R2,R3
	clr R3
	sts 197,R2
	.dbline 153
; 
	sts 196,R16
	.dbline 156
; 
; 
; 
	lds R24,193
	ori R24,24
	sts 193,R24
L22:
	.dbline 158
	.dbline 158
	lds R24,193
	ori R24,128
	sts 193,R24
	.dbline 158
L23:
	.dbline 158
; 
; 
	.dbline -2
L21:
	.dbline 0 ; func end
	ret
	.dbsym r baudrate 16 s
	.dbend
	.area data(ram, con, rel)
	.dbfile H:\work\myWork\AVR-CC1100/protocol.h
_RecLen::
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile H:\work\myWork\AVR-CC1100/protocol.h
	.dbfile H:\work\myWork\AVR-CC1100\main.c
	.dbsym e RecLen _RecLen c
	.area text(rom, con, rel)
	.dbfile H:\work\myWork\AVR-CC1100\main.c
	.dbfunc e USART_INT _USART_INT fV
;        recByte -> R16
	.even
_USART_INT::
	.dbline -1
	.dbline 29
L26:
	.dbline 31
	.dbline 31
	lds R24,193
	andi R24,127
	sts 193,R24
	.dbline 31
L27:
	.dbline 31
	.dbline 33
	lds R16,198
	.dbline 35
	cpi R16,170
	brne L29
	.dbline 36
	.dbline 37
	lds R2,_fUART
	tst R2
	brne L30
	.dbline 38
	ldi R24,2
	sts _fUART,R24
	.dbline 39
	rjmp L30
L29:
	.dbline 40
	cpi R16,85
	brne L33
	.dbline 41
	.dbline 42
	lds R24,_fUART
	cpi R24,2
	brne L34
	.dbline 43
	ldi R24,3
	sts _fUART,R24
	.dbline 44
	rjmp L34
L33:
	.dbline 46
	.dbline 47
	lds R24,_fUART
	cpi R24,2
	brne L37
	.dbline 48
	.dbline 49
	ldi R24,<_RecData+1
	ldi R25,>_RecData+1
	lds R30,_RecLen
	clr R31
	add R30,R24
	adc R31,R25
	std z+0,R16
	.dbline 50
	lds R24,_RecLen
	subi R24,255    ; addi 1
	sts _RecLen,R24
	.dbline 51
L37:
	.dbline 52
L34:
L30:
L40:
	.dbline 54
	.dbline 54
	lds R24,193
	ori R24,128
	sts 193,R24
	.dbline 54
L41:
	.dbline 54
	.dbline -2
L25:
	.dbline 0 ; func end
	ret
	.dbsym r recByte 16 c
	.dbend
	.dbfunc e REC_PKT _REC_PKT fV
	.even
_REC_PKT::
	.dbline -1
	.dbline 59
	.dbline 60
	cbi 0x1d,0
	.dbline 63
	ldi R18,255
	ldi R16,<_RecData
	ldi R17,>_RecData
	rcall _spiReceivePacket
	.dbline 65
	sbi 0x1c,0
	.dbline 66
	sbi 0x1d,0
	.dbline -2
L43:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e main _main fV
	.even
_main::
	sbiw R28,2
	.dbline -1
	.dbline 70
	.dbline 72
	cli
	.dbline 73
	clr R2
	sts 96,R2
	.dbline 74
	sts _fUART,R2
	.dbline 76
	rcall _SpiInit
	.dbline 77
	rcall _cc1100Init
	.dbline 81
	nop
	.dbline 82
	sei
	.dbline 84
	ldi R24,255
	ldi R25,0
	std y+1,R25
	std y+0,R24
	clr R18
	clr R19
	ldi R16,<_RecData
	ldi R17,>_RecData
	rcall _memset
	.dbline 86
	ldi R16,1
	rcall _setPktType
	.dbline 87
	clr R16
	rcall _setAddress
	.dbline 88
	ldi R16,255
	rcall _setPktLen
	.dbline 89
	clr R16
	rcall _setSendType
	.dbline 91
	ldi R18,6
	ldi R16,2
	rcall _spiWriteReg
	rjmp L46
L45:
	.dbline 114
	.dbline 115
	ldi R18,255
	ldi R16,<_RecData
	ldi R17,>_RecData
	rcall _spiReceivePacket
	tst R16
	breq L48
	.dbline 116
	rjmp L51
L48:
	.dbline 117
L46:
	.dbline 113
	rjmp L45
L50:
	.dbline 121
L51:
	.dbline 121
	rjmp L50
X0:
	.dbline -2
L44:
	adiw R28,2
	.dbline 0 ; func end
	ret
	.dbend
	.area bss(ram, con, rel)
	.dbfile H:\work\myWork\AVR-CC1100\main.c
_RecData::
	.blkb 255
	.dbsym e RecData _RecData A[255:255]c
_fCC1100::
	.blkb 1
	.dbsym e fCC1100 _fCC1100 c
_fUART::
	.blkb 1
	.dbsym e fUART _fUART c

⌨️ 快捷键说明

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