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

📄 iremote_ir.s

📁 一个用ICCAVR7.0开发的红外线发射程序.单片机是AVR的ATtiny13V.
💻 S
📖 第 1 页 / 共 2 页
字号:
;      temp1=time_10ms;
	std y+4,R2
	.dbline 110
;      if((PINB&0x08)==0){
	sbic 0x16,3
	rjmp L51
X12:
	.dbline 110
	.dbline 111
; 	   temp2++;
	ldd R0,y+5
	inc R0
	std y+5,R0
	.dbline 112
; 	 }
L51:
	.dbline 113
;    } 
L49:
	.dbline 114
;  }while(time_10ms<10);  
L47:
	.dbline 114
	lds R24,_time_10ms
	cpi R24,10
	brlo L46
X13:
	.dbline 115
;  User_ID[0]=EEPROM_read(0x10);
	ldi R16,16
	rcall _EEPROM_read
	sts _User_ID,R16
	.dbline 116
;  User_ID[1]=EEPROM_read(0x11);
	ldi R16,17
	rcall _EEPROM_read
	sts _User_ID+1,R16
	.dbline 117
;  User_ID[2]=EEPROM_read(0x12);
	ldi R16,18
	rcall _EEPROM_read
	mov R10,R16
	sts _User_ID+2,R10
	.dbline 118
;  User_ID[3]=EEPROM_read(0x13);
	ldi R16,19
	rcall _EEPROM_read
	mov R10,R16
	sts _User_ID+3,R10
	.dbline 119
;  User_ID[4]=EEPROM_read(0x14);
	ldi R16,20
	rcall _EEPROM_read
	mov R10,R16
	sts _User_ID+4,R10
	.dbline 120
;  User_ID[5]=EEPROM_read(0x15); 
	ldi R16,21
	rcall _EEPROM_read
	mov R10,R16
	sts _User_ID+5,R10
	.dbline 121
;  EEPROM_read(0x38);
	ldi R16,56
	rcall _EEPROM_read
	.dbline 122
;  EEPROM_read(0x39);  
	ldi R16,57
	rcall _EEPROM_read
	.dbline 123
;  if(temp2>5){ 
	ldi R24,5
	ldd R0,y+5
	cp R24,R0
	brlo X25
	rjmp L58
X25:
X14:
	.dbline 123
	.dbline 124
;    temp3=User_ID[2];
	lds R12,_User_ID+2
	clr R13
	.dbline 125
;    temp3<<=8;
	mov R13,R12
	clr R12
	.dbline 126
;    temp3|=User_ID[3];
	lds R2,_User_ID+3
	clr R3
	or R12,R2
	or R13,R3
	.dbline 127
;    temp4=User_ID[4];
	lds R14,_User_ID+4
	clr R15
	.dbline 128
;    temp4<<=8;
	mov R15,R14
	clr R14
	.dbline 129
;    temp4|=User_ID[5];
	lds R2,_User_ID+5
	clr R3
	or R14,R2
	or R15,R3
	.dbline 130
;    ID=temp3;
	mov R2,R12
	mov R3,R13
	clr R4
	clr R5
	std y+0,R2
	std y+1,R3
	std y+2,R4
	std y+3,R5
	.dbline 131
;    ID<<=16;
	ldd R2,y+0
	ldd R3,y+1
	ldd R4,y+2
	ldd R5,y+3
	mov R4,R2
	mov R5,R3
	clr R2
	clr R3
	std y+0,R2
	std y+1,R3
	std y+2,R4
	std y+3,R5
	.dbline 132
;    ID|=temp4; 
	mov R2,R14
	mov R3,R15
	clr R4
	clr R5
	ldd R6,y+0
	ldd R7,y+1
	ldd R8,y+2
	ldd R9,y+3
	or R6,R2
	or R7,R3
	or R8,R4
	or R9,R5
	std y+0,R6
	std y+1,R7
	std y+2,R8
	std y+3,R9
	.dbline 133
;    time_10ms=0;temp1=0;temp2=0;temp5=0;
	clr R2
	sts _time_10ms,R2
	.dbline 133
	clr R0
	std y+4,R0
	.dbline 133
	std y+5,R0
	.dbline 133
	clr R10
L64:
	.dbline 134
;    do{
	.dbline 135
;      WDR();
	wdr
	.dbline 136
;      if(temp1!=time_10ms){
	lds R2,_time_10ms
	ldd R0,y+4
	cp R0,R2
	breq L67
X15:
	.dbline 136
	.dbline 137
;        temp1=time_10ms;
	std y+4,R2
	.dbline 138
; 	   if((PINB&0x08)==0){	     
	sbic 0x16,3
	rjmp L69
X16:
	.dbline 138
	.dbline 139
; 		 time_10ms=0; 
	clr R2
	sts _time_10ms,R2
	.dbline 140
; 		 temp2++;temp5=0;
	ldd R0,y+5
	inc R0
	std y+5,R0
	.dbline 140
	clr R10
	.dbline 141
; 		 if(temp2>150)temp2=200;
	ldi R24,150
	cp R24,R0
	brsh L70
X17:
	.dbline 141
	ldi R24,200
	std y+5,R24
	.dbline 142
; 	   }
	rjmp L70
L69:
	.dbline 143
; 	   else{
	.dbline 144
; 	     temp5++;
	inc R10
	.dbline 145
; 		 if(temp5>10)break;
	ldi R24,10
	cp R24,R10
	brsh L73
X18:
	.dbline 145
	rjmp L66
L73:
	.dbline 146
; 	   }	 
L70:
	.dbline 147
; 	 }
L67:
	.dbline 148
; 	 User_ID[2]++;
	lds R24,_User_ID+2
	subi R24,255    ; addi 1
	sts _User_ID+2,R24
	.dbline 149
; 	 ID++;
	ldi R20,1
	ldi R21,0
	ldi R22,0
	ldi R23,0
	ldd R2,y+0
	ldd R3,y+1
	ldd R4,y+2
	ldd R5,y+3
	add R2,R20
	adc R3,R21
	adc R4,R22
	adc R5,R23
	std y+0,R2
	std y+1,R3
	std y+2,R4
	std y+3,R5
	.dbline 150
;    }while(time_10ms<200); 
L65:
	.dbline 150
	lds R24,_time_10ms
	cpi R24,200
	brlo L64
X19:
L66:
	.dbline 151
;    TCCR0B=0;
	clr R2
	out 0x33,R2
	.dbline 152
;    TIMSK0=0;
	out 0x39,R2
	.dbline 153
;    CLI();      
	cli
	.dbline 154
;    if(temp2>150){  
	ldi R24,150
	ldd R0,y+5
	cp R24,R0
	brlo X26
	rjmp L100
X26:
X20:
	.dbline 154
	.dbline 155
;      temp4=ID;
	ldd R14,y+0
	ldd R15,y+1
	.dbline 156
;      temp3=ID>>16;   
	ldd R2,y+0
	ldd R3,y+1
	ldd R4,y+2
	ldd R5,y+3
	mov R12,R4
	mov R13,R5
	.dbline 157
;      User_ID[3]=temp3;
	sts _User_ID+3,R12
	.dbline 158
;      User_ID[2]=(temp3>>8)+User_ID[2];
	lds R2,_User_ID+2
	clr R3
	mov R4,R12
	mov R5,R13
	mov R4,R5
	clr R5
	add R4,R2
	adc R5,R3
	sts _User_ID+2,R4
	.dbline 159
;      User_ID[5]=temp4;
	sts _User_ID+5,R14
	.dbline 160
;      User_ID[4]=temp4>>8;
	mov R2,R14
	mov R3,R15
	mov R2,R3
	clr R3
	sts _User_ID+4,R2
	.dbline 161
; 	 if(pw_off_ram!=0xaa){
	lds R24,_pw_off_ram
	cpi R24,170
	brne X27
	rjmp L100
X27:
X21:
	.dbline 161
	.dbline 162
; 	   EEPROM_write(0x12,User_ID[2]);
	mov R18,R4
	ldi R16,18
	rcall _EEPROM_write
	.dbline 163
;        EEPROM_write(0x13,User_ID[3]);
	lds R18,_User_ID+3
	ldi R16,19
	rcall _EEPROM_write
	.dbline 164
;        EEPROM_write(0x14,User_ID[4]);
	lds R18,_User_ID+4
	ldi R16,20
	rcall _EEPROM_write
	.dbline 165
;        EEPROM_write(0x15,User_ID[5]);	
	lds R18,_User_ID+5
	ldi R16,21
	rcall _EEPROM_write
	.dbline 166
; 	   EEPROM_write(0x38,0x55);	
	ldi R18,85
	ldi R16,56
	rcall _EEPROM_write
	.dbline 167
; 	   EEPROM_write(0x39,0xaa);	  
	ldi R18,170
	ldi R16,57
	rcall _EEPROM_write
	.dbline 168
; 	   temp2=0;
	clr R0
	std y+5,R0
	.dbline 169
;        for(temp1=0;temp1<6;temp1++){
	std y+4,R0
	rjmp L92
L89:
	.dbline 169
	.dbline 170
;          temp2+=User_ID[temp1];
	ldi R24,<_User_ID
	ldi R25,>_User_ID
	ldd R30,y+4
	clr R31
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	ldd R0,y+5
	add R0,R2
	std y+5,R0
	.dbline 171
;        }
L90:
	.dbline 169
	ldd R0,y+4
	inc R0
	std y+4,R0
L92:
	.dbline 169
	ldd R24,y+4
	cpi R24,6
	brlo L89
X22:
	.dbline 172
;        User_ID[6]=temp2; 
	ldd R0,y+5
	sts _User_ID+6,R0
	.dbline 173
; 	   send_code();
	rcall _send_code
	.dbline 174
; 	 }
	.dbline 175
;    }         
	.dbline 176
;  }
	rjmp L100
L58:
	.dbline 177
;  else{
	.dbline 178
;    TCCR0B=0;
	clr R2
	out 0x33,R2
	.dbline 179
;    TIMSK0=0;
	out 0x39,R2
	.dbline 180
;    CLI(); 
	cli
	.dbline 181
;    temp2=0;
	clr R0
	std y+5,R0
	.dbline 182
;    for(temp1=0;temp1<6;temp1++){
	std y+4,R0
	rjmp L97
L94:
	.dbline 182
	.dbline 183
;      temp2+=User_ID[temp1];
	ldi R24,<_User_ID
	ldi R25,>_User_ID
	ldd R30,y+4
	clr R31
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	ldd R0,y+5
	add R0,R2
	std y+5,R0
	.dbline 184
;    }
L95:
	.dbline 182
	ldd R0,y+4
	inc R0
	std y+4,R0
L97:
	.dbline 182
	ldd R24,y+4
	cpi R24,6
	brlo L94
X23:
	.dbline 185
;    User_ID[6]=temp2;
	ldd R0,y+5
	sts _User_ID+6,R0
	.dbline 186
;    send_code();
	rcall _send_code
	.dbline 187
;  }  
	rjmp L100
L99:
	.dbline 188
;  while(1){
	.dbline 189
;    pw_off_ram=0xaa;//写入防重复RESET误写码
	ldi R24,170
	sts _pw_off_ram,R24
	.dbline 190
;    PW_OFF;
	cbi 0x18,4
	.dbline 191
;  }  
L100:
	.dbline 188
	rjmp L99
X24:
	.dbline -2
L42:
	.dbline 0 ; func end
	adiw R28,6
	ret
	.dbsym r temp4 14 i
	.dbsym r temp3 12 i
	.dbsym r temp5 10 c
	.dbsym l ID 0 l
	.dbsym l temp2 5 c
	.dbsym l temp1 4 c
	.dbend
	.area bss(ram, con, rel)
	.dbfile F:\iRemote_IR\iRemote_IR.c
_pw_off_ram::
	.blkb 1
	.dbsym e pw_off_ram _pw_off_ram c
_User_ID::
	.blkb 7
	.dbsym e User_ID _User_ID A[7:7]c
_time_10ms::
	.blkb 1
	.dbsym e time_10ms _time_10ms c
; }
; 

⌨️ 快捷键说明

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