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

📄 1.src

📁 本设计采用ATMEL公司的AT89S52单片机和红外遥控技术实现近距离无线通信的软硬件系统。为了使受控设备识别信号
💻 SRC
📖 第 1 页 / 共 2 页
字号:
; 	       P2=n;
			; SOURCE LINE # 106
	MOV  	P2,R7
; 	    } 
			; SOURCE LINE # 107
	RET  	
; END OF _display

; 
; 	  /*=========发射调制后的高电平函数==========*/ 
;         void sendh(uchar n)

	RSEG  ?PR?_sendh?1
_sendh:
	USING	0
			; SOURCE LINE # 110
;---- Variable 'n?544' assigned to Register 'R7' ----
; 		{ 
			; SOURCE LINE # 111
; 		  uchar e;  													 
; 		  sendport=1; 		   
			; SOURCE LINE # 113
	SETB 	sendport
; 		  for(e=0;e<n;e++)	
			; SOURCE LINE # 114
;---- Variable 'e?545' assigned to Register 'R6' ----
	CLR  	A
	MOV  	R6,A
?C0040:
	MOV  	A,R6
	CLR  	C
	SUBB 	A,R7
	JNC  	?C0043
; 		  {		
			; SOURCE LINE # 115
;          #pragma ASM
; 		  NOP
	  NOP
; 		  NOP
	  NOP
; 		  NOP
	  NOP
; 		  NOP
	  NOP
; 		  #pragma ENDASM
; 		  sendport=!sendport;		
			; SOURCE LINE # 122
	CPL  	sendport
; 		  }	
			; SOURCE LINE # 123
	INC  	R6
	SJMP 	?C0040
; 	    }
			; SOURCE LINE # 124
?C0043:
	RET  	
; END OF _sendh

; 
; 	 /*=========发射函数==========*/ 
;    void send(uchar qq)

	RSEG  ?PR?_send?1
_send:
	USING	0
			; SOURCE LINE # 127
;---- Variable 'qq?646' assigned to Register 'R7' ----
;   {
			; SOURCE LINE # 128
;     bit c;
;     uchar i;
; 	datayuan=qq;	
			; SOURCE LINE # 131
	MOV  	datayuan,R7
; 	datafan=~qq;
			; SOURCE LINE # 132
	MOV  	A,R7
	CPL  	A
	MOV  	datafan,A
;     sendh(0xef);	   //发送起始位 高电平
			; SOURCE LINE # 133
	MOV  	R7,#0EFH
	LCALL	_sendh
;     delay(0x007a);	  //发送起始位	低电平
			; SOURCE LINE # 134
	MOV  	R7,#07AH
	MOV  	R6,#00H
	LCALL	_delay
;     address=0x55;     //地址码
			; SOURCE LINE # 135
	MOV  	address,#055H
; 
;     for(i=0;i<8;i++)        
			; SOURCE LINE # 137
;---- Variable 'i?648' assigned to Register 'R5' ----
	CLR  	A
	MOV  	R5,A
?C0044:
;    {
			; SOURCE LINE # 138
;      c=ad7;   
			; SOURCE LINE # 139
	MOV  	C,ad7
	MOV  	c?647,C
;      if(c==1) 
			; SOURCE LINE # 140
	JNB  	c?647,?C0047
;      sendh(0x9f);
			; SOURCE LINE # 141
	MOV  	R7,#09FH
	SJMP 	?C0088
?C0047:
; 	 else 
;      sendh(0x4f); 
			; SOURCE LINE # 143
	MOV  	R7,#04FH
?C0088:
	LCALL	_sendh
?C0048:
;      delay(0x0082);
			; SOURCE LINE # 144
	LCALL	L?0092
; 	 address<<=1;  
			; SOURCE LINE # 145
	MOV  	A,address
	ADD  	A,ACC
	MOV  	address,A
;     }				//发送地址位 
			; SOURCE LINE # 146
	INC  	R5
	CJNE 	R5,#08H,?C0044
?C0045:
;     
;      for(i=0;i<8;i++)              
			; SOURCE LINE # 148
	CLR  	A
	MOV  	R5,A
?C0049:
;      {
			; SOURCE LINE # 149
;         c=datayuan7;
			; SOURCE LINE # 150
	MOV  	C,datayuan7
	MOV  	c?647,C
;         if(c==1)
			; SOURCE LINE # 151
	JNB  	c?647,?C0052
;         sendh(0x9f);
			; SOURCE LINE # 152
	MOV  	R7,#09FH
	SJMP 	?C0089
?C0052:
;        else
;        sendh(0x4f);
			; SOURCE LINE # 154
	MOV  	R7,#04FH
?C0089:
	LCALL	_sendh
?C0053:
;         delay(0x0082);	 				 //发送数据位
			; SOURCE LINE # 155
	LCALL	L?0092
; 	   datayuan=datayuan<<1;
			; SOURCE LINE # 156
	MOV  	A,datayuan
	ADD  	A,ACC
	MOV  	datayuan,A
;       }	  	  
			; SOURCE LINE # 157
	INC  	R5
	CJNE 	R5,#08H,?C0049
?C0050:
; 
;        for(i=0;i<8;i++)
			; SOURCE LINE # 159
	CLR  	A
	MOV  	R5,A
?C0054:
;       {
			; SOURCE LINE # 160
;           c=datafan7;
			; SOURCE LINE # 161
	MOV  	C,datafan7
	MOV  	c?647,C
;           if(c==1)
			; SOURCE LINE # 162
	JNB  	c?647,?C0057
;           sendh(0x9f);
			; SOURCE LINE # 163
	MOV  	R7,#09FH
	SJMP 	?C0090
?C0057:
; 		  else
;           sendh(0x4f);
			; SOURCE LINE # 165
	MOV  	R7,#04FH
?C0090:
	LCALL	_sendh
?C0058:
;           delay(0x0082);
			; SOURCE LINE # 166
	LCALL	L?0093
; 		  datafan=datafan<<1;
			; SOURCE LINE # 167
	MOV  	A,datafan
	ADD  	A,ACC
	MOV  	datafan,A
;          }			                  //发送数据反码
			; SOURCE LINE # 168
	INC  	R5
	CJNE 	R5,#08H,?C0054
?C0055:
;         sendh(0x4f);   
			; SOURCE LINE # 169
	MOV  	R7,#04FH
	LCALL	_sendh
;         sendport=0;		           //发送结束位
			; SOURCE LINE # 170
	CLR  	sendport
;      }
			; SOURCE LINE # 171
	RET  	
; END OF _send

; 
; 	/*=========初始化==========*/ 
; 
; 	  void 	original()

	RSEG  ?PR?original?1
original:
			; SOURCE LINE # 175
; 	  {
			; SOURCE LINE # 176
; 		undisplay();    //关显示
			; SOURCE LINE # 177
	LJMP 	undisplay
; END OF original

; 	 	  }
; 
; 	/*==========键盘扫描函数==========*/
; 
; 	   kbscan()

	RSEG  ?PR?kbscan?1
kbscan:
	USING	0
			; SOURCE LINE # 182
; 	  {
			; SOURCE LINE # 183
; 	     if(m==0)
			; SOURCE LINE # 184
	JB   	m,?C0061
; 	    {	   
			; SOURCE LINE # 185
;            key=kbscan1();   //键盘取值函数1
			; SOURCE LINE # 186
	LCALL	kbscan1
	MOV  	key,R7
; 		   if(key==0x01)
			; SOURCE LINE # 187
	MOV  	A,key
	CJNE 	A,#01H,?C0063
; 		  {  
			; SOURCE LINE # 188
; 		    m=1;
			; SOURCE LINE # 189
	SETB 	m
; 			key=0x00;
			; SOURCE LINE # 190
; 		    }
			; SOURCE LINE # 191
; 		  }
			; SOURCE LINE # 192
	SJMP 	?C0091
?C0061:
; 		 else
; 		 {
			; SOURCE LINE # 194
; 		    key=kbscan2();   //键盘取值函数2
			; SOURCE LINE # 195
	LCALL	kbscan2
	MOV  	key,R7
; 		    if(key==0x02)
			; SOURCE LINE # 196
	MOV  	A,key
	CJNE 	A,#02H,?C0063
; 	       { 
			; SOURCE LINE # 197
; 		     m=0;
			; SOURCE LINE # 198
	CLR  	m
; 		     key=0x00;
			; SOURCE LINE # 199
?C0091:
	CLR  	A
	MOV  	key,A
;   		        }
			; SOURCE LINE # 200
; 		  }
			; SOURCE LINE # 201
?C0063:
; 			return key;
			; SOURCE LINE # 202
	MOV  	R7,key
	MOV  	R6,#00H
; 		  }
			; SOURCE LINE # 203
?C0065:
	RET  	
; END OF kbscan

; 
; 
;      /*========取发送数据==========*/
; 	  uchar qudata()

	RSEG  ?PR?qudata?1
qudata:
	USING	0
			; SOURCE LINE # 207
; 	  {
			; SOURCE LINE # 208
;            uchar  y;
; 		   switch(key)
			; SOURCE LINE # 210
	MOV  	A,key
	LCALL	?C?CCASE
	DW   	?C0067
	DB   	06H
	DW   	?C0073
	DB   	07H
	DW   	?C0078
	DB   	039H
	DW   	?C0069
	DB   	04FH
	DW   	?C0068
	DB   	05BH
	DW   	?C0079
	DB   	05EH
	DW   	?C0070
	DB   	066H
	DW   	?C0071
	DB   	06DH
	DW   	?C0075
	DB   	06FH
	DW   	?C0076
	DB   	077H
	DW   	?C0080
	DB   	079H
	DW   	?C0077
	DB   	07CH
	DW   	?C0072
	DB   	07DH
	DW   	?C0074
	DB   	07FH
	DW   	00H
	DW   	?C0066
; 	 	      {
			; SOURCE LINE # 211
; 	       case 0x06:y=0x01;break;
			; SOURCE LINE # 212
?C0067:
	MOV  	y?949,#01H
	SJMP 	?C0066
; 		   case 0x5b:y=0x02;break;
			; SOURCE LINE # 213
?C0068:
	MOV  	y?949,#02H
	SJMP 	?C0066
; 		   case 0x4f:y=0x03;break;
			; SOURCE LINE # 214
?C0069:
	MOV  	y?949,#03H
	SJMP 	?C0066
; 		   case 0x66:y=0x04;break;								
			; SOURCE LINE # 215
?C0070:
	MOV  	y?949,#04H
	SJMP 	?C0066
; 		   case 0x6d:y=0x05;break;	 
			; SOURCE LINE # 216
?C0071:
	MOV  	y?949,#05H
	SJMP 	?C0066
; 		   case 0x7d:y=0x06;break;
			; SOURCE LINE # 217
?C0072:
	MOV  	y?949,#06H
	SJMP 	?C0066
; 		   case 0x07:y=0x07;break;
			; SOURCE LINE # 218
?C0073:
	MOV  	y?949,#07H
	SJMP 	?C0066
; 		   case 0x7f:y=0x08;break;
			; SOURCE LINE # 219
?C0074:
	MOV  	y?949,#08H
	SJMP 	?C0066
; 		   case 0x6f:y=0x09;break;
			; SOURCE LINE # 220
?C0075:
	MOV  	y?949,#09H
	SJMP 	?C0066
; 		   case 0x77:y=0x0a;break;
			; SOURCE LINE # 221
?C0076:
	MOV  	y?949,#0AH
	SJMP 	?C0066
; 		   case 0x7c:y=0x0b;break;
			; SOURCE LINE # 222
?C0077:
	MOV  	y?949,#0BH
	SJMP 	?C0066
; 		   case 0x39:y=0x0c;break;										
			; SOURCE LINE # 223
?C0078:
	MOV  	y?949,#0CH
	SJMP 	?C0066
; 		   case 0x5e:y=0x0d;break;		 
			; SOURCE LINE # 224
?C0079:
	MOV  	y?949,#0DH
	SJMP 	?C0066
; 		   case 0x79:y=0x0e;break;	 
			; SOURCE LINE # 225
?C0080:
	MOV  	y?949,#0EH
; 		   default: break; 	
			; SOURCE LINE # 226
; 		   }
			; SOURCE LINE # 227
?C0066:
;             return y;
			; SOURCE LINE # 228
	MOV  	R7,y?949
; 		   }
			; SOURCE LINE # 229
?C0082:
	RET  	
; END OF qudata

; 
; 	 	/*=========主程序==========*/ 
;      void main(void)

	RSEG  ?PR?main?1
main:
	USING	0
			; SOURCE LINE # 232
;     {   
			; SOURCE LINE # 233
; 	  uchar senddata; 	  			
; 		original();	 //初始化  
			; SOURCE LINE # 235
	LCALL	original
?C0083:
; 	      
;         while(1)
			; SOURCE LINE # 237
;        {  
			; SOURCE LINE # 238
; 	   	 kbscan();	   //键盘取值函数
			; SOURCE LINE # 239
	LCALL	kbscan
; 
; 		 if(key!=0)
			; SOURCE LINE # 241
	MOV  	A,key
	JZ   	?C0083
; 		 {
			; SOURCE LINE # 242
;               display(key);	           //显示函数
			; SOURCE LINE # 243
	MOV  	R7,A
	LCALL	_display
;               senddata=qudata();
			; SOURCE LINE # 244
	LCALL	qudata
;---- Variable 'senddata?1050' assigned to Register 'R4' ----
	MOV  	R4,AR7
; 		      send(senddata);		   //发射函数
			; SOURCE LINE # 245
	LCALL	_send
;               delay(0x30ce);            //延时100ms            
			; SOURCE LINE # 246
	MOV  	R7,#0CEH
	MOV  	R6,#030H
	LCALL	_delay
;               send(senddata);         //发射函数
			; SOURCE LINE # 247
	MOV  	R7,AR4
	LCALL	_send
; 			  delay(0xf405);		  //延时0.5s
			; SOURCE LINE # 248
	MOV  	R7,#05H
	MOV  	R6,#0F4H
	LCALL	_delay
; 			  delay(0xf405);		  //延时0.5s
			; SOURCE LINE # 249
	MOV  	R7,#05H
	MOV  	R6,#0F4H
	LCALL	_delay
;     	      undisplay();            //关显示
			; SOURCE LINE # 250
	LCALL	undisplay
; 		      key=0x00;               //键值清零
			; SOURCE LINE # 251
	CLR  	A
	MOV  	key,A
; 		        }
			; SOURCE LINE # 252
;         }
			; SOURCE LINE # 253
	SJMP 	?C0083
; END OF main

	END

⌨️ 快捷键说明

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