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

📄 timer_send.s

📁 AVR控制的SAB82525——HDLC通信 循环队列处理 完全是自己写的
💻 S
📖 第 1 页 / 共 2 页
字号:
	.module Timer_Send.c
	.area data(ram, con, rel)
_data_array01::
	.blkb 2
	.area idata
	.byte 2,147
	.area data(ram, con, rel)
	.blkb 30
	.area idata
	.word 0,0,0,0,0
	.word 0,0,0,0,0
	.byte 0,0,0,0,0,0,0,0,0,0
	.area data(ram, con, rel)
	.dbfile E:\Projects\AVR\Timer_Send\Timer_Send.c
	.dbsym e data_array01 _data_array01 A[32:32]c
_data_array02::
	.blkb 2
	.area idata
	.byte 2,0
	.area data(ram, con, rel)
	.dbfile E:\Projects\AVR\Timer_Send\Timer_Send.c
	.blkb 2
	.area idata
	.byte 255,238
	.area data(ram, con, rel)
	.dbfile E:\Projects\AVR\Timer_Send\Timer_Send.c
	.blkb 28
	.area idata
	.word 0,0,0,0,0
	.word 0,0,0,0,0
	.byte 0,0,0,0,0,0,0,0
	.area data(ram, con, rel)
	.dbfile E:\Projects\AVR\Timer_Send\Timer_Send.c
	.dbsym e data_array02 _data_array02 A[32:32]c
_data_array03::
	.blkb 2
	.area idata
	.byte 3,0
	.area data(ram, con, rel)
	.dbfile E:\Projects\AVR\Timer_Send\Timer_Send.c
	.blkb 1
	.area idata
	.byte 'f
	.area data(ram, con, rel)
	.dbfile E:\Projects\AVR\Timer_Send\Timer_Send.c
	.blkb 29
	.area idata
	.word 0,0,0,0,0
	.word 0,0,0,0,0
	.byte 0,0,0,0,0,0,0,0,0
	.area data(ram, con, rel)
	.dbfile E:\Projects\AVR\Timer_Send\Timer_Send.c
	.dbsym e data_array03 _data_array03 A[32:32]c
_data_array04::
	.blkb 2
	.area idata
	.byte 4,0
	.area data(ram, con, rel)
	.dbfile E:\Projects\AVR\Timer_Send\Timer_Send.c
	.blkb 1
	.area idata
	.byte 255
	.area data(ram, con, rel)
	.dbfile E:\Projects\AVR\Timer_Send\Timer_Send.c
	.blkb 29
	.area idata
	.word 0,0,0,0,0
	.word 0,0,0,0,0
	.byte 0,0,0,0,0,0,0,0,0
	.area data(ram, con, rel)
	.dbfile E:\Projects\AVR\Timer_Send\Timer_Send.c
	.dbsym e data_array04 _data_array04 A[32:32]c
_data_array05::
	.blkb 2
	.area idata
	.byte 5,0
	.area data(ram, con, rel)
	.dbfile E:\Projects\AVR\Timer_Send\Timer_Send.c
	.blkb 2
	.area idata
	.byte 255,255
	.area data(ram, con, rel)
	.dbfile E:\Projects\AVR\Timer_Send\Timer_Send.c
	.blkb 2
	.area idata
	.byte 238,255
	.area data(ram, con, rel)
	.dbfile E:\Projects\AVR\Timer_Send\Timer_Send.c
	.blkb 2
	.area idata
	.byte 238,255
	.area data(ram, con, rel)
	.dbfile E:\Projects\AVR\Timer_Send\Timer_Send.c
	.blkb 2
	.area idata
	.byte 238,255
	.area data(ram, con, rel)
	.dbfile E:\Projects\AVR\Timer_Send\Timer_Send.c
	.blkb 2
	.area idata
	.byte 238,255
	.area data(ram, con, rel)
	.dbfile E:\Projects\AVR\Timer_Send\Timer_Send.c
	.blkb 2
	.area idata
	.byte 238,255
	.area data(ram, con, rel)
	.dbfile E:\Projects\AVR\Timer_Send\Timer_Send.c
	.blkb 1
	.area idata
	.byte 238
	.area data(ram, con, rel)
	.dbfile E:\Projects\AVR\Timer_Send\Timer_Send.c
	.blkb 17
	.area idata
	.word 0,0,0,0,0
	.byte 0,0,0,0,0,0,0
	.area data(ram, con, rel)
	.dbfile E:\Projects\AVR\Timer_Send\Timer_Send.c
	.dbsym e data_array05 _data_array05 A[32:32]c
	.area text(rom, con, rel)
	.dbfile E:\Projects\AVR\Timer_Send\Timer_Send.c
	.dbfunc e chipinit _chipinit fV
	.even
_chipinit::
	.dbline -1
	.dbline 77
; //主机发I桢m-m,从机用透明模式
; 
; //------------------------------------------------------------------
; 
; 
; #include "iom128v.h"
; #include "macros.h"
; 
; //------------------------------------------------------------------
; 
; #define XFIFO ((volatile unsigned char *)0)
; #define XBYTE ((volatile unsigned char *)0) 
; #define MASK (*(volatile unsigned char *)0x2020)
; #define MASB (*(volatile unsigned char *)0x2060)
; #define ISTA (*(volatile unsigned char *)0x2020)
; #define ISTB (*(volatile unsigned char *)0x2060)
; #define CMDR (*(volatile unsigned char *)0x2021)
; #define STAR (*(volatile unsigned char *)0x2021)
; #define MODE (*(volatile unsigned char *)0x2022)
; #define TIMR (*(volatile unsigned char *)0x2023)
; #define XAD1 (*(volatile unsigned char *)0x2023)
; #define EXIR (*(volatile unsigned char *)0x2024)
; #define XAD2 (*(volatile unsigned char *)0x2025)
; #define RBCL (*(volatile unsigned char *)0x2025)
; #define RAH1 (*(volatile unsigned char *)0x2026)
; #define RAH2 (*(volatile unsigned char *)0x2027)
; #define RSTA (*(volatile unsigned char *)0x2027)
; #define RAL1 (*(volatile unsigned char *)0x2028)
; #define RAL2 (*(volatile unsigned char *)0x2029)
; #define RHCR (*(volatile unsigned char *)0x2029)
; #define XBCL (*(volatile unsigned char *)0x202a)
; #define BGR  (*(volatile unsigned char *)0x202b)
; #define CCR2 (*(volatile unsigned char *)0x202c)
; #define XBCH (*(volatile unsigned char *)0x202d)
; #define RBCH (*(volatile unsigned char *)0x202d)
; #define RLCR (*(volatile unsigned char *)0x202e)
; #define VSTR (*(volatile unsigned char *)0x202e)
; #define CCR1 (*(volatile unsigned char *)0x202f)
; #define XFW  (STAR&0x40)>>6                     //发送FIFO可写
; #define CEC  (STAR&0x04)>>2                     //CEC=1,CMDR不可写;CEC=0,CMDR可写
; #define RME  (ISTA&0x80)>>7                     //信息接收结束
; #define RPF  (ISTA&0x40)>>6                     //32Bytes接受池满
; #define RSC  (ISTA&0x20)>>5                     //自动模式下对方的状态
; #define XPR  (ISTA&0x10)>>4                     //发送池正空
; #define TIN  (ISTA&0x08)>>3                     //定时器中断
; #define XMR  (EXIR&0x80)>>7                     //发送需要重复
; #define XDU  (EXIR&0x40)>>6                     //发送中途中止
; #define PCE  (EXIR&0x20)>>5                     //协议错误
; #define RFO  (EXIR&0x10)>>4                     //接收数据无法存入RFIFO造成溢出
; #define CSC  (EXIR&0x08)>>3                     //CTS状态改变
; #define RFS  (EXIR&0x04)>>2                     //接收到帧头
; //---------------------------------------------------------------------
; unsigned char flag_txd;
; unsigned char pre_txd[33];
; unsigned char count;
; extern unsigned char front,rear;
; //-----------------------------------------------------------------------------
; 
; //Queue_2D Declaration Start===================================================
; void InitQueue();
; unsigned char QueueEmpty();
; unsigned char QueueFull();
; void EnQueue(unsigned char txd_data[32],unsigned char num_enQ);    //入队
; void DeQueue();        //出队
; //Queue_2D Declaration End=====================================================
; 
; //DATA Array for Test Start====================================================
; unsigned char data_array01[32]={0x02,0x93};
; unsigned char data_array02[32]={0x02,0x00,0xff,0xee};
; unsigned char data_array03[32]={0x03,0x00,0x66};
; unsigned char data_array04[32]={0x04,0x00,0xff};
; unsigned char data_array05[32]={0x05,0x00,0xff,0xff,0xee,0xff,0xee,0xff,0xee,0xff,0xee,0xff,0xee,0xff,0xee};
; //DATA Array for Test End======================================================
; 
; //-----------------------------------------------------------------------------
; void chipinit(void)
; { 
	.dbline 78
; 	 DDRB|=0xcf;		//1100_1111
	in R24,0x17
	ori R24,207
	out 0x17,R24
	.dbline 79
; 	 PORTB|=0xcf;		//同上
	in R24,0x18
	ori R24,207
	out 0x18,R24
	.dbline 81
; 	 
; 	 DDRD=0xfc;			//1111_1100		**
	ldi R24,252
	out 0x11,R24
	.dbline 84
; 	 //PORTD=0x3f;
; 	 
; 	 DDRE=0x07;			//0000_0011
	ldi R24,7
	out 0x2,R24
	.dbline 85
; 	 PORTE=0xfc;		//1111_1100
	ldi R24,252
	out 0x3,R24
	.dbline 87
; 	 
; 	 DDRF=0x00;			//0000_0000
	clr R2
	sts 97,R2
	.dbline 88
; 	 PORTF=0xff;		//1111_1111
	ldi R24,255
	sts 98,R24
	.dbline 90
; 	 
;    DDRG=0xff;			//1111_1111
	sts 100,R24
	.dbline 91
; 	 PORTG=0x1f;		//0001_1111
	ldi R24,31
	sts 101,R24
	.dbline 96
; 
;     //enable the interrupt
; 	 //SREG|=0x80;		//1000_0000
; 	 //enable the external ram
; 	 MCUCR=(1<<SRE);//使能外部RAM线路
	ldi R24,128
	out 0x35,R24
	.dbline 98
; 	 
; 	 EICRA=0x00;
	sts 106,R2
	.dbline 99
; 	 EIMSK=0x00;
	out 0x39,R2
	.dbline 102
; 	 //EIMSK=0x01;
;      
;    return;
	.dbline -2
L1:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e resethdlc _resethdlc fV
	.even
_resethdlc::
	.dbline -1
	.dbline 106
; }
; //-------------------------------------------------------------
; void resethdlc(void)
; {
	.dbline 107
;    PORTD|=0x40;			//0100_0000
	sbi 0x12,6
	.dbline -2
	.dbline 109
;    //PORTD&=0xbf;
; } 
L2:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e cshdlc _cshdlc fV
	.even
_cshdlc::
	.dbline -1
	.dbline 112
; //--------------------------------------------------------------
; void cshdlc(void)
; {  
	.dbline 113
;    PORTD&=0x3f;			//0011_1111
	in R24,0x12
	andi R24,63
	out 0x12,R24
	.dbline -2
	.dbline 114
; }
L3:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e int_open _int_open fV
	.even
_int_open::
	.dbline -1
	.dbline 118
;     
; //-------------------------------------------------------------
; void int_open(void)
; {
	.dbline 119
; 	_SEI();
	sei
	.dbline 120
; 	asm("nop");
	nop
	.dbline -2
	.dbline 121
; }
L4:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e clk _clk fV
	.even
_clk::
	.dbline -1
	.dbline 124
; //--------------------------------------------------------------
; void clk(void)
; {
	.dbline 125
; 	PORTD&=0xdf;				//1101_1111					片选8254
	in R24,0x12
	andi R24,223
	out 0x12,R24
	.dbline 128
; 	
; 	//送入计数方式	
; 	XBYTE[0x3300]=0x36;	//地址11_0000_0000	数据0011_0110
	ldi R24,54
	sts 13056,R24
	.dbline 129
; 	XBYTE[0x3000]=0x02;	//地址00_0000_0000	数据0000_0010
	ldi R24,2
	sts 12288,R24
	.dbline 130
; 	XBYTE[0x3000]=0x00;	//地址00_0000_0000	数据0000_0000
	clr R2
	sts 12288,R2
	.dbline 132
; 	
; 	XBYTE[0x3300]=0x76;	//									数据0111_0110
	ldi R24,118
	sts 13056,R24
	.dbline 133
; 	XBYTE[0x3100]=0x02;	//地址01_0000_0000	数据0000_0010
	ldi R24,2
	sts 12544,R24
	.dbline 134
; 	XBYTE[0x3100]=0x00;	//地址01_0000_0000	数据0000_0000
	sts 12544,R2
	.dbline 136
; 	
; 	XBYTE[0x3300]=0xB6;	//									数据1011_0110
	ldi R24,182
	sts 13056,R24
	.dbline 137
; 	XBYTE[0x3200]=0x02;	//地址10_0000_0000	数据0000_0010
	ldi R24,2
	sts 12800,R24
	.dbline 138
; 	XBYTE[0x3200]=0x00;	//地址10_0000_0000	数据0000_0000
	sts 12800,R2
	.dbline 141
; 	
; 	//启动分频计数器
; 	PORTD|=0x1c;				//0001_1100	
	in R24,0x12
	ori R24,28
	out 0x12,R24

⌨️ 快捷键说明

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