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

📄 ocr0.s

📁 单片机红外控制发射与接收,红外发射是一种常用的控制方式
💻 S
📖 第 1 页 / 共 2 页
字号:
	.module OCR0.c
	.area text(rom, con, rel)
	.dbfile C:\DOCUME~1\Administrator\桌面\新建文~1\OCR0/delay.h
	.dbfunc e delay_1us _delay_1us fV
	.even
_delay_1us::
	.dbline -1
	.dbline 5
; //ICC-AVR application builder : 2007-5-16 1:38:35
; // Target : M16
; // Crystal: 8.0000Mhz
; 
; #include <iom16v.h>
	.dbline 6
; #include <macros.h>
	nop
	.dbline -2
L1:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e delay_nus _delay_nus fV
;              i -> R20,R21
;              n -> R22,R23
	.even
_delay_nus::
	xcall push_gset2
	movw R22,R16
	.dbline -1
	.dbline 10
; #include"delay.h"
; 
; void header(void)
; {
	.dbline 11
;                        PORTB=0x08;
	clr R20
	clr R21
	.dbline 12
; 	                   DDRB=0x08;
	xjmp L6
L3:
	.dbline 13
	xcall _delay_1us
L4:
	.dbline 12
	subi R20,255  ; offset = 1
	sbci R21,255
L6:
	.dbline 12
	cp R20,R22
	cpc R21,R23
	brlo L3
	.dbline -2
L2:
	xcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r i 20 i
	.dbsym r n 22 i
	.dbend
	.dbfunc e delay_1ms _delay_1ms fV
;              i -> R16,R17
	.even
_delay_1ms::
	.dbline -1
	.dbline 17
; 	                   delay_nus(5200);
; 	                   DDRB=0x00;
; 	                   delay_nus(2600); //header
; }
; void data_1(void)
	.dbline 19
	clr R16
	clr R17
	xjmp L11
L8:
	.dbline 19
L9:
	.dbline 19
	subi R16,255  ; offset = 1
	sbci R17,255
L11:
	.dbline 19
; {
;                        DDRB=0x08;
	cpi R16,116
	ldi R30,4
	cpc R17,R30
	brlo L8
	.dbline -2
L7:
	.dbline 0 ; func end
	ret
	.dbsym r i 16 i
	.dbend
	.dbfunc e delay _delay fV
;              i -> R20,R21
;              n -> R22,R23
	.even
_delay::
	xcall push_gset2
	movw R22,R16
	.dbline -1
	.dbline 23
; 	                   delay_nus(310);
; 	                   DDRB=0x00;
; 	                   delay_nus(640); 
; }
	.dbline 24
; void data_0(void)
	clr R20
	clr R21
	.dbline 25
; {
	xjmp L16
L13:
	.dbline 26
	xcall _delay_1ms
L14:
	.dbline 25
	subi R20,255  ; offset = 1
	sbci R21,255
L16:
	.dbline 25
	cp R20,R22
	cpc R21,R23
	brlo L13
	.dbline -2
L12:
	xcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r i 20 i
	.dbsym r n 22 i
	.dbend
	.dbfile C:\DOCUME~1\Administrator\桌面\新建文~1\OCR0\OCR0.c
	.dbfunc e header _header fV
	.even
_header::
	.dbline -1
	.dbline 10
	.dbline 11
	ldi R24,8
	out 0x18,R24
	.dbline 12
	out 0x17,R24
	.dbline 13
	ldi R16,5200
	ldi R17,20
	xcall _delay_nus
	.dbline 14
	clr R2
	out 0x17,R2
	.dbline 15
	ldi R16,2600
	ldi R17,10
	xcall _delay_nus
	.dbline -2
L17:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e data_1 _data_1 fV
	.even
_data_1::
	.dbline -1
	.dbline 18
	.dbline 19
	ldi R24,8
	out 0x17,R24
	.dbline 20
	ldi R16,310
	ldi R17,1
	xcall _delay_nus
	.dbline 21
	clr R2
	out 0x17,R2
	.dbline 22
	ldi R16,640
	ldi R17,2
	xcall _delay_nus
	.dbline -2
L18:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e data_0 _data_0 fV
	.even
_data_0::
	.dbline -1
	.dbline 25
	.dbline 26
;                        DDRB=0x08;
	ldi R24,8
	out 0x17,R24
	.dbline 27
; 	                   delay_nus(310);
	ldi R16,310
	ldi R17,1
	xcall _delay_nus
	.dbline 28
; 	                   DDRB=0x00;
	clr R2
	out 0x17,R2
	.dbline 29
; 	                   delay_nus(320); 
	ldi R16,320
	ldi R17,1
	xcall _delay_nus
	.dbline -2
L19:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e end _end fV
	.even
_end::
	.dbline -1
	.dbline 32
; }
; void end(void)
; {
	.dbline 33
;                        DDRB=0x08;
	ldi R24,8
	out 0x17,R24
	.dbline 34
; 	                   delay_nus(310);
	ldi R16,310
	ldi R17,1
	xcall _delay_nus
	.dbline 35
; 	                   DDRB=0x00;
	clr R2
	out 0x17,R2
	.dbline 36
; 	                   delay_nus(640); 
	ldi R16,640
	ldi R17,2
	xcall _delay_nus
	.dbline -2
L20:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e port_init _port_init fV
	.even
_port_init::
	.dbline -1
	.dbline 40
; }
; 
; void port_init(void)
; {
	.dbline 41
;  PORTA = 0x00;
	clr R2
	out 0x1b,R2
	.dbline 42
;  DDRA  = 0x00;
	out 0x1a,R2
	.dbline 43
;  PORTB = 0x00;
	out 0x18,R2
	.dbline 44
;  DDRB  = 0x00;
	out 0x17,R2
	.dbline 45
;   PORTC=0xff; 
	ldi R24,255
	out 0x15,R24
	.dbline 46
;   DDRC=0x0f;
	ldi R24,15
	out 0x14,R24
	.dbline 49
;  //PORTC = 0x00; //m103 output only
;  //DDRC  = 0x00;
;  PORTD = 0x00;
	out 0x12,R2
	.dbline 50
;  DDRD  = 0x00;
	out 0x11,R2
	.dbline -2
L21:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e timer0_init _timer0_init fV
	.even
_timer0_init::
	.dbline -1
	.dbline 58
; }
; //-----------------------timer0----------------//
; //TIMER0 initialize - prescale:8
; // WGM: CTC
; // desired value: 39KHz
; // actual value: 38.462KHz (-1.4%)
; void timer0_init(void)
; {
	.dbline 59
;  TCCR0 = 0x00; //stop
	clr R2
	out 0x33,R2
	.dbline 60
;  TCNT0 = 0x00; //set count
	out 0x32,R2
	.dbline 61
;  OCR0  = 0x0C;  //set compare
	ldi R24,12
	out 0x3c,R24
	.dbline 62
;  TCCR0 = 0x1A; //start timer
	ldi R24,26
	out 0x33,R24
	.dbline -2
L22:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e main _main fV
	.area func_lit(rom, con, rel)
L51:
	.word `L50
	.word `L35
	.word `L36
	.word `L37
	.word `L38
	.word `L39
	.word `L40
	.word `L41
	.word `L42
	.word `L43
	.word `L44
	.word `L45
	.word `L46
	.word `L47
	.word `L48
	.word `L49
	.area text(rom, con, rel)
	.dbfile C:\DOCUME~1\Administrator\桌面\新建文~1\OCR0\OCR0.c
;            abc -> <dead>
;              i -> R20
;        keyval1 -> R22
;        keyval2 -> R10
	.even
_main::
	.dbline -1
	.dbline 71
; }
; //-------------------------timer1-----------//
; 
; 
; 
; 
; //call this routine to initialize all peripherals
; void main(void)
; {
	.dbline 75
;  unsigned char abc;
;  
;  unsigned char keyval1,keyval2;
;  unsigned char i=0;
	clr R20
	.dbline 80
;  //abc=EEPROM_read(0x14);
;  //delay_1us();
;  //OSCCAL=abc;
;  //stop errant interrupts until set up
;  CLI(); //disable all interrupts
	cli
	.dbline 81
;  port_init();
	xcall _port_init
	.dbline 82
;  timer0_init();
	xcall _timer0_init
	.dbline 85
;  //timer1_init();
;  
;  MCUCR = 0x00;
	clr R2
	out 0x35,R2
	.dbline 86
;  GICR  = 0x00;
	out 0x3b,R2
	.dbline 87
;  TIMSK = 0x00; //timer interrupt sources
	out 0x39,R2
	.dbline 88
;  SEI(); //re-enable interrupts
	sei
	xjmp L25
L24:
	.dbline 91
;  //all peripherals are now initialized
;  while(1)
;     {
	.dbline 94
; 	//PORTB=0x00;
; 	//DDRB=0x08;
; 	scan_key();
	xcall _scan_key
	.dbline 95
; 	keyval1=scan_key();
	xcall _scan_key
	mov R22,R16
	.dbline 96
;      if (keyval1!=0x7f)
	cpi R16,127
	breq L27
	.dbline 97
;         {
L29:
	.dbline 99
;          do
;             {
	.dbline 100
;              keyval2=scan_key();
	xcall _scan_key
	mov R10,R16
	.dbline 101
;             }
L30:
	.dbline 102
;           while (keyval1==keyval2);
	cp R22,R10
	breq L29
	.dbline 103
;         }
L27:
	.dbline 104
;      switch(keyval1)   
	mov R20,R22
	clr R21
	cpi R20,0
	ldi R30,0
	cpc R21,R30
	brge X2
	xjmp L33
X2:
	ldi R24,15
	ldi R25,0
	cp R24,R20
	cpc R25,R21
	brge X3
	xjmp L33
X3:
	ldi R16,2
	ldi R17,0
	movw R18,R20
	xcall empy16s
	movw R30,R16
	ldi R24,<L51
	ldi R25,>L51
	add R30,R24
	adc R31,R25
	lpm R0,Z+
	lpm R1,Z
	movw R30,R0
	ijmp
X0:
	.dbline 105
;          {  
L35:
	.dbline 107
;             case 1:  //PORTB=0x01;
; 			           header();
	xcall _header
	.dbline 108
; 					   data_1();
	xcall _data_1
	.dbline 109
; 					   data_0();
	xcall _data_0
	.dbline 110
; 					   data_0();
	xcall _data_0
	.dbline 111
; 					   data_0();
	xcall _data_0
	.dbline 112
; 					   data_0();
	xcall _data_0
	.dbline 113
; 					   data_0();
	xcall _data_0
	.dbline 114
; 					   data_0();
	xcall _data_0
	.dbline 115
; 					   data_0();
	xcall _data_0
	.dbline 116
; 					   end();
	xcall _end
	.dbline 118
; 			           
; 				   break;
	xjmp L33
L36:
	.dbline 121
; 				   
;             case 2:  //PORTB=0x02;
; 			          header();
	xcall _header
	.dbline 123
; 					  
; 					  data_0();
	xcall _data_0
	.dbline 124
; 					  data_1();
	xcall _data_1
	.dbline 125
; 					  data_0();
	xcall _data_0
	.dbline 126
; 					  data_0();
	xcall _data_0
	.dbline 127
; 					  data_0();
	xcall _data_0
	.dbline 128
; 					  data_0();
	xcall _data_0
	.dbline 129
; 					  data_0();
	xcall _data_0
	.dbline 130
; 					  data_0();
	xcall _data_0
	.dbline 131
; 					  end();
	xcall _end
	.dbline 133
; 	                   
; 			          break;
	xjmp L33
L37:
	.dbline 135
;             case 3:  //PORTB=0x03; 
; 			          header();
	xcall _header
	.dbline 136
; 					  data_1();
	xcall _data_1
	.dbline 137
; 					  data_1();
	xcall _data_1
	.dbline 138
; 					  data_0();
	xcall _data_0
	.dbline 139
; 					  data_0();
	xcall _data_0
	.dbline 140
; 					  data_0();
	xcall _data_0
	.dbline 141
; 					  data_0();
	xcall _data_0
	.dbline 142
; 					  data_0();
	xcall _data_0
	.dbline 143
; 					  data_0();
	xcall _data_0
	.dbline 144
; 					  end();
	xcall _end
	.dbline 145
; 			              break; 
	xjmp L33
L38:
	.dbline 147
;             case 4:  //PORTB=0x04;
; 			          header();
	xcall _header
	.dbline 148
; 					  data_0();
	xcall _data_0
	.dbline 149
; 					  data_0();
	xcall _data_0
	.dbline 150
; 					  data_1();
	xcall _data_1
	.dbline 151
; 					  data_0();
	xcall _data_0
	.dbline 152
; 					  data_0();
	xcall _data_0
	.dbline 153
; 					  data_0();
	xcall _data_0
	.dbline 154
; 					  data_0();
	xcall _data_0
	.dbline 155
; 					  data_0();
	xcall _data_0
	.dbline 156
; 					  end();
	xcall _end
	.dbline 157
; 			       break;
	xjmp L33
L39:
	.dbline 159
;             case 5:  //PORTB=0x05;
; 			          header();
	xcall _header
	.dbline 160
; 					  data_1();
	xcall _data_1
	.dbline 161
; 					  data_0();
	xcall _data_0
	.dbline 162
; 					  data_1();
	xcall _data_1
	.dbline 163
; 					  data_0();
	xcall _data_0
	.dbline 164
; 					  data_0();
	xcall _data_0
	.dbline 165
; 					  data_0();
	xcall _data_0
	.dbline 166
; 					  data_0();
	xcall _data_0
	.dbline 167
; 					  data_0();
	xcall _data_0
	.dbline 168
; 					  end();
	xcall _end
	.dbline 169
; 			       break;
	xjmp L33
L40:
	.dbline 171
;             case 6:  //PORTB=0x06;
; 			          header();
	xcall _header
	.dbline 172
; 					  data_0();
	xcall _data_0
	.dbline 173
; 					  data_1();
	xcall _data_1
	.dbline 174
; 					  data_1();
	xcall _data_1
	.dbline 175
; 					  data_0();
	xcall _data_0
	.dbline 176
; 					  data_0();
	xcall _data_0
	.dbline 177
; 					  data_0();
	xcall _data_0
	.dbline 178
; 					  data_0();
	xcall _data_0
	.dbline 179

⌨️ 快捷键说明

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