📄 ocr0.s
字号:
.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 + -