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

📄 210.s

📁 433M收发,内有PCB(用99打开),源程序ICC打开,用了IC发送和三极管两种,接收用RX3310
💻 S
📖 第 1 页 / 共 2 页
字号:
	.module _210.c
	.area data(ram, con, rel)
_mark::
	.blkb 2
	.area idata
	.word 1500
	.area data(ram, con, rel)
	.dbfile E:\abol\file\EMD\programme\EM-PB-210\210.c
	.dbsym e mark _mark I
_flag::
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile E:\abol\file\EMD\programme\EM-PB-210\210.c
	.dbsym e flag _flag c
_flagh::
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile E:\abol\file\EMD\programme\EM-PB-210\210.c
	.dbsym e flagh _flagh c
_acount::
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile E:\abol\file\EMD\programme\EM-PB-210\210.c
	.dbsym e acount _acount c
_bcount::
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile E:\abol\file\EMD\programme\EM-PB-210\210.c
	.dbsym e bcount _bcount c
	.area text(rom, con, rel)
	.dbfile E:\abol\file\EMD\programme\EM-PB-210\210.c
	.dbfunc e port_init _port_init fV
	.even
_port_init::
	.dbline -1
	.dbline 27
; #include <iot13v.h>
; #include <macros.h>
; #define uchar unsigned char
; #define unit unsigned int
; #define ulong unsigned long
; #define xtal 8
; 
; int mark=1500;	
; 
; unsigned int ai,aa;
; unsigned char crc,i,j,flag=0,flagh=0,flagl,acount=0,bcount=0,PINBS;
; unsigned char DECODER_CODE1,DECODER_CODE0; 
; unsigned char data[3]; 
; unsigned char dataf[3];
; 
; 
; //PB3是控制输出端口!
; #define	RF_ON			PORTB |= (1 << PB2)	//打开输出
; #define	RF_OFF			PORTB &= ~(1 << PB2)	//关闭输出 
; #define	EN_ON			PORTB |= (1 << PB1)	//打开输出
; #define	EN_OFF			PORTB &= ~(1 << PB1)	//关闭输出 
; #define DOOR_IN         PINTB =BIT(0)
; 
; 
; //端口初始化
; void port_init(void)
; {
	.dbline 28
; 	PORTB = 0x29;	//输入设置有上拉电阻,输出预设低电平
	ldi R24,41
	out 0x18,R24
	.dbline 29
; 	DDRB  = 0x0e;	//PB4输出,PB3输入
	ldi R24,14
	out 0x17,R24
	.dbline -2
L1:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e adc_init _adc_init fV
	.even
_adc_init::
	.dbline -1
	.dbline 33
; }
; //转换初始化
; void adc_init(void)
; {
	.dbline 34
; 	ADCSRA=0x00;	//
	clr R2
	out 0x6,R2
	.dbline 36
; 
; 	ADCMUX = 0x42;	//片内作为模拟参考电压 选择ADC2通道
	ldi R24,66
	out 0x7,R24
	.dbline 37
; 	ACSR = (1 << ACD);//禁用模拟比较器
	ldi R24,128
	ldi R25,0
	out 0x9,R25
	out 0x8,R24
	.dbline 41
; 
; 	//使能ADC,终端允许,自由模式,时钟CLK/8
; 	//0x86允许转换ADEN,ADSC,时钟128分频 75KHz@9.6MHz system clock
; 	ADCSRA = (1 << ADEN) | 0x07;//| ( 1 << ADATE )
	ldi R24,135
	out 0x6,R24
	.dbline -2
L2:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e EEPROM_write _EEPROM_write fV
;         ucdata -> R18
;      uiaddress -> R16
	.even
_EEPROM_write::
	.dbline -1
	.dbline 53
; 	
; }
; /*//看门狗初始化
; void watchdog_init(void)
; {
;  WDR(); //this prevents a timout on enabling
;  WDTCR=(1<<WDCE)|(1<<WDE);
;  WDTCR=(0<<WDE);
; }*/
; /*		EEPROM 写入	*/	
; void EEPROM_write(unsigned char uiaddress,unsigned char ucdata)
; {
	.dbline 54
;  WDR();
	wdr
L4:
	.dbline 55
L5:
	.dbline 55
;  while(EECR&(1<<EEWE)); /*等待上一次写操作结束*/
	sbic 0x1c,1
	rjmp L4
	.dbline 56
;  EEAR=uiaddress; /*设置地址寄存器*/
	out 0x1e,R16
	.dbline 57
;  EEDR=ucdata;
	out 0x1d,R18
	.dbline 58
;  EECR|=(1<<EEMWE);
	sbi 0x1c,2
	.dbline 59
;  EECR|=(1<<EEWE); /*置位EEMWE 置位EEWE以启动写操作*/
	sbi 0x1c,1
	.dbline -2
L3:
	.dbline 0 ; func end
	ret
	.dbsym r ucdata 18 c
	.dbsym r uiaddress 16 c
	.dbend
	.dbfunc e EEPROM_read _EEPROM_read fc
;      uiaddress -> R16
	.even
_EEPROM_read::
	.dbline -1
	.dbline 64
; }
; 
; /*      EEPROM 读取     */
; unsigned char EEPROM_read(unsigned char uiaddress)
; {
L8:
	.dbline 65
L9:
	.dbline 65
;    while(EECR&(1<<EEWE));  /*等待上一次写操作结束*/
	sbic 0x1c,1
	rjmp L8
	.dbline 66
;    EEAR=uiaddress;    /*设置地址寄存器*/
	out 0x1e,R16
	.dbline 67
; 	EECR|=(1<<EERE);	/*置位EEMWE 置位EEWE以启动读操作*/ 
	sbi 0x1c,0
	.dbline 68
; 	return EEDR;	/*自数据存贮器返回数据*/
	in R16,0x1d
	.dbline -2
L7:
	.dbline 0 ; func end
	ret
	.dbsym r uiaddress 16 c
	.dbend
	.dbfunc e del _del fV
;           time -> R16,R17
	.even
_del::
	.dbline -1
	.dbline 72
; } 
; /*		微秒级延时程序	*/	
; void del(int time)
; 	 {     
L12:
	.dbline 74
;   	  do
; 	  	{
	.dbline 75
; 		 time--;
	subi R16,1
	sbci R17,0
	.dbline 76
; 		}	
L13:
	.dbline 77
;   	  while (time>1);
	ldi R24,1
	ldi R25,0
	cp R24,R16
	cpc R25,R17
	brlt L12
	.dbline -2
L11:
	.dbline 0 ; func end
	ret
	.dbsym r time 16 I
	.dbend
	.dbfunc e delay_1ms _delay_1ms fV
;             i1 -> R16,R17
	.even
_delay_1ms::
	.dbline -1
	.dbline 82
; 	 }
; 	 
; /*	   毫秒级延时程序   	*/	 
; void delay_1ms(void)
; { unsigned int i1;
	.dbline 83
;  for(i1=1;i1<(unsigned int)(xtal*143-2);i1++)
	ldi R16,1
	ldi R17,0
	rjmp L19
L16:
	.dbline 84
L17:
	.dbline 83
	subi R16,255  ; offset = 1
	sbci R17,255
L19:
	.dbline 83
	cpi R16,118
	ldi R30,4
	cpc R17,R30
	brlo L16
	.dbline -2
L15:
	.dbline 0 ; func end
	ret
	.dbsym r i1 16 i
	.dbend
	.dbfunc e delay _delay fV
;             i2 -> R20,R21
;              n -> R22,R23
	.even
_delay::
	rcall push_gset2
	mov R22,R16
	mov R23,R17
	.dbline -1
	.dbline 88
;     ;
; }
; 
; void delay(unsigned int n)
; {
	.dbline 89
;  unsigned int i2=0;
	clr R20
	clr R21
	rjmp L22
L21:
	.dbline 91
	.dbline 91
	rcall _delay_1ms
	.dbline 92
	subi R20,255  ; offset = 1
	sbci R21,255
	.dbline 92
	wdr
	.dbline 93
L22:
	.dbline 90
;    while(i2<n)
	cp R20,R22
	cpc R21,R23
	brlo L21
	.dbline -2
L20:
	rcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r i2 20 i
	.dbsym r n 22 i
	.dbend
	.dbfunc e GetADC _GetADC fi
;      adc_value -> R20,R21
	.even
_GetADC::
	rcall push_gset1
	.dbline -1
	.dbline 97
;    {delay_1ms();
;     i2++; WDR();
;    }
; }
; //从AD口读入一个值
; unsigned int GetADC(void)
; {
	.dbline 100
; 
; unsigned int	adc_value;
; 	DDRB|=(1<<PB3);
	sbi 0x17,3
	.dbline 101
; 	PORTB&=~(1<<PB3);
	cbi 0x18,3
	.dbline 102
; 	ADC = 0;
	clr R2
	clr R3
	out 0x5,R3
	out 0x4,R2
	.dbline 103
; 	ADCSRA  |=  (1 << ADSC);	//启动AD转换
	sbi 0x6,6
	.dbline 105
; 
; 	del(10);
	ldi R16,10
	ldi R17,0
	rcall _del
L25:
	.dbline 106
L26:
	.dbline 106
; 	while(!(ADCSRA&(BIT(ADIF))));////ADIF=4, 表示若ADCSR的第5位置为1,则中断AD转换
	sbis 0x6,4
	rjmp L25
	.dbline 109
; 	//loop_until_bit_is_set(ADCSRA, ADIF);//等待AD转换结束
; 
; 	ADCSRA |= (1 << ADIF);		//写1清除标志位
	sbi 0x6,4
	.dbline 111
; 
; 	adc_value = ADC;		//读转换结果
	in R20,0x4
	in R21,0x5
	.dbline 112
; 	DDRB&=~(1<<PB3);
	cbi 0x17,3
	.dbline 113
; 	PORTB|=(1<<PB3);
	sbi 0x18,3
	.dbline 115
; 	
; 	return adc_value;
	mov R16,R20
	mov R17,R21
	.dbline -2
L24:
	rcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r adc_value 20 i
	.dbend
	.dbfunc e CRC3 _CRC3 fc
;              i -> <dead>
;              j -> R22
;            len -> R10
;           data -> R20,R21
	.even
_CRC3::
	rcall push_gset3
	mov R10,R18
	mov R20,R16
	mov R21,R17
	.dbline -1
	.dbline 127
; }
; /****************************************** 
; CRC3校验函数  
; 输  入:        ptr需要进行校验的数据包  
;         len需要校验的数据包字节数  
; 输  出:        校验码; 
; 调  用:        无; 
; 被调用:        从机协议打包函数; 
; 功  能:        将一给定的数据包进行CRC3校验给调用者返回校验码  
; ******************************************/ 
; unsigned char CRC3(unsigned char *data, unsigned char len) 
; { 
	.dbline 130
;     unsigned char i; 
;     unsigned char j; 
;     j = 0;
	clr R22
	.dbline 131
; 	crc=0; 
	clr R2
	sts _crc,R2
	rjmp L30
L29:
	.dbline 134
; 
;     while(len) 
;     { 
	.dbline 136
;         /*多项式除法*/ 
;         if(*data & (0x80>>j))  //如果该位为1 
	mov R18,R22
	clr R19
	ldi R16,128
	ldi R17,0
	rcall asr16
	mov R30,R20
	mov R31,R21
	ldd R2,z+0
	clr R3
	and R2,R16
	and R3,R17
	tst R2
	brne X0
	tst R3
	breq L32
X0:
	.dbline 137
;             crc |= 0x01;  //则在余数尾部添1否则添0 
	lds R24,_crc
	ori R24,1
	sts _crc,R24
L32:
	.dbline 138
;         if(crc >= 0x8) 
	lds R24,_crc
	cpi R24,8
	brlo L34
	.dbline 139
;             crc ^= 11; 
	ldi R24,11
	lds R2,_crc
	eor R2,R24
	sts _crc,R2
L34:
	.dbline 140
;         crc <<= 1; 
	lds R2,_crc
	lsl R2
	sts _crc,R2
	.dbline 141
;         j++;
	inc R22
	.dbline 142
; 		if(len==1)
	mov R24,R10
	cpi R24,1
	brne L36
	.dbline 143
; 		{
	.dbline 144
; 		  if(j == 7) 
	cpi R22,7
	brne L37
	.dbline 145
;          { 
	.dbline 146
;             j = 0; 
	clr R22
	.dbline 147
;             data++; 
	subi R20,255  ; offset = 1
	sbci R21,255
	.dbline 148
;             len--; 
	dec R10
	.dbline 149
;          }
	.dbline 150
; 		}
	rjmp L37
L36:
	.dbline 152
; 		else
; 		{ 
	.dbline 153

⌨️ 快捷键说明

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