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

📄 main.s

📁 AVR单片机系统开发经典实例部分源程序
💻 S
字号:
	.module main.c
	.area data(ram, con, rel)
_serial_num::
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile C:\AVR\cc2420驱动程序\code\main.c
	.dbsym e serial_num _serial_num c
	.area text(rom, con, rel)
	.dbfile C:\AVR\cc2420驱动程序\code\main.c
	.dbfunc e main _main fV
;              j -> R22,R23
;              i -> R20
	.even
_main::
	.dbline -1
	.dbline 9
; #include "cc2420.h"
; #include "spi.h"
; 
; unsigned char Data_TXFIFO[TX_length];    //要写入TXFIFO中的数据,包括帧长度,MAC头,MAC有效负载等部分
; unsigned char serial_num=0;         //数据序号
; 
; 
; void main(void)
; {
	.dbline 13
;   unsigned char i;
;   unsigned int j;
;   
;   initled();
	xcall _initled
	.dbline 14
;   init_spi();
	xcall _init_spi
	.dbline 16
;   
;   LED_YELLOW;
	sbi 0x1b,0
	.dbline 16
	cbi 0x1b,1
	.dbline 16
	.dbline 17
;   PORTB |=(1<<CSn);                //CSN引脚置位,停止SPI操作,
	sbi 0x18,0
	.dbline 18
;   PORTB |=1<<SCK;                    // Spi clock line init high
	sbi 0x18,1
	.dbline 19
;   PORTE |=1<<RST;                     //注意该引脚低电平时,cc2420处于复位状态
	sbi 0x3,2
	.dbline 21
;   
;   Data_TXFIFO[0]=TX_length+1;    //第一字节为帧长度,不包括长度域本身的字节,但包含帧校验序列2字节
	ldi R24,113
	sts _Data_TXFIFO,R24
	.dbline 24
;   
;   //帧控制域,无安全,确认要求,数据帧,包含16位的目标地址,源地址,目标PAN标识符,源PAN标识符
;   Data_TXFIFO[1]=0x88;     //高字节
	ldi R24,136
	sts _Data_TXFIFO+1,R24
	.dbline 25
;   Data_TXFIFO[2]=0x01;     //低字节
	ldi R24,1
	sts _Data_TXFIFO+2,R24
	.dbline 28
;   
;   //目的PAN标识符
;   Data_TXFIFO[4]=0x23;
	ldi R24,35
	sts _Data_TXFIFO+4,R24
	.dbline 29
;   Data_TXFIFO[5]=0x45;
	ldi R24,69
	sts _Data_TXFIFO+5,R24
	.dbline 32
;   
;   //目的地址
;   Data_TXFIFO[6]=0x15;
	ldi R24,21
	sts _Data_TXFIFO+6,R24
	.dbline 33
;   Data_TXFIFO[7]=0x73; 
	ldi R24,115
	sts _Data_TXFIFO+7,R24
	.dbline 36
;   
;   //源PAN标识符
;   Data_TXFIFO[8]=0x86;
	ldi R24,134
	sts _Data_TXFIFO+8,R24
	.dbline 37
;   Data_TXFIFO[9]=0x49;
	ldi R24,73
	sts _Data_TXFIFO+9,R24
	.dbline 40
;   
;   //源地址
;   Data_TXFIFO[10]=0x59;
	ldi R24,89
	sts _Data_TXFIFO+10,R24
	.dbline 41
;   Data_TXFIFO[11]=0x04;
	ldi R24,4
	sts _Data_TXFIFO+11,R24
	.dbline 44
;   
;   //有效负载
;   for (i=12;i<TX_length;i++)
	ldi R20,12
	xjmp L15
L12:
	.dbline 45
	.dbline 46
	ldi R24,<_Data_TXFIFO
	ldi R25,>_Data_TXFIFO
	mov R30,R20
	clr R31
	add R30,R24
	adc R31,R25
	mov R24,R20
	subi R24,12
	std z+0,R24
	.dbline 47
L13:
	.dbline 44
	inc R20
L15:
	.dbline 44
	cpi R20,112
	brlo L12
	.dbline 49
;   {
;     Data_TXFIFO[i]=i-12;
;   }
;   
;   Set_Configure();     //初始化设置配置字
	xcall _Set_Configure
	.dbline 50
;   PwDown_Idle();       //从掉电模式转换到空闲模式
	xcall _PwDown_Idle
	.dbline 52
;   
;   j=0;
	clr R22
	clr R23
	xjmp L17
L16:
	.dbline 54
;   while(1)
;   {
	.dbline 55
;     j++;
	subi R22,255  ; offset = 1
	sbci R23,255
	.dbline 56
; 	if (j==2048)
	cpi R22,0
	ldi R30,8
	cpc R23,R30
	brne L19
	.dbline 57
; 	{
	.dbline 58
; 	  break;
	xjmp L18
L19:
	.dbline 60
; 	}
; 	AllStates_Idle();
	xcall _AllStates_Idle
	.dbline 62
; 	//序列号
; 	Data_TXFIFO[3]=serial_num;
	lds R2,_serial_num
	sts _Data_TXFIFO+3,R2
	.dbline 63
; 	serial_num++;
	mov R24,R2
	subi R24,255    ; addi 1
	sts _serial_num,R24
	.dbline 64
; 	if(serial_num==250)
	cpi R24,250
	brne L22
	.dbline 65
; 	{
	.dbline 66
; 	  serial_num=0;
	clr R2
	sts _serial_num,R2
	.dbline 67
; 	}
L22:
	.dbline 69
	ldi R18,<_Data_TXFIFO
	ldi R19,>_Data_TXFIFO
	ldi R16,112
	xcall _Write_TXFIFO
	.dbline 70
	xcall _Idle_Tx
	.dbline 72
	xcall _Delay10ms
	.dbline 73
	xcall _Delay10ms
	.dbline 74
L17:
	.dbline 53
	xjmp L16
L18:
	.dbline 75
; 	
; 	Write_TXFIFO(TX_length,Data_TXFIFO);  //将数据写入到TXFIFO中
; 	Idle_Tx();    //启动发送
; 	
; 	Delay10ms();
; 	Delay10ms();
;   }
;   LED_RED;
	cbi 0x1b,0
	.dbline 75
	sbi 0x1b,1
	.dbline 75
L24:
	.dbline 76
	.dbline 76
	.dbline 76
L25:
	.dbline 76
	xjmp L24
X0:
	.dbline -2
L1:
	.dbline 0 ; func end
	ret
	.dbsym r j 22 i
	.dbsym r i 20 c
	.dbend
	.area bss(ram, con, rel)
	.dbfile C:\AVR\cc2420驱动程序\code\main.c
_Data_TXFIFO::
	.blkb 112
	.dbsym e Data_TXFIFO _Data_TXFIFO A[112:112]c

⌨️ 快捷键说明

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