?? wave50%.s
字號(hào):
.module Wave50%.c
.area text(rom, con, rel)
.dbfile C:\DOCUME~1\hb\MYDOCU~1\噴嗎機(jī)--2代\單片機(jī)程序\定時(shí)器(方波輸出,TC0控制)\Wave50%.c
.dbfunc e port_init _port_init fV
.even
_port_init::
.dbline -1
.dbline 11
; //ICC-AVR application builder : 2006-12-10 11:12:46
; // Target : M8
; // Crystal: 4.0000Mhz
;
; #include <iom8v.h>
; #include <macros.h>
; long Ddummy;
; char Settings_PerDotGroupNum,Settings_PrintPhase;
;
; void port_init(void)
; {
.dbline 12
; PORTB = 0x00;
clr R2
out 0x18,R2
.dbline 13
; DDRB = 0xFF;
ldi R24,255
out 0x17,R24
.dbline 14
; PORTC = 0x7F; //m103 output only
ldi R24,127
out 0x15,R24
.dbline 15
; DDRC = 0x00;
out 0x14,R2
.dbline 16
; PORTD = 0xFF;
ldi R24,255
out 0x12,R24
.dbline 17
; DDRD = 0x00;
out 0x11,R2
.dbline -2
.dbline 18
; }
L1:
.dbline 0 ; func end
ret
.dbend
.dbfunc e timer0_init _timer0_init fV
.even
_timer0_init::
.dbline -1
.dbline 25
;
; //TIMER0 initialisation - prescale:1
; // WGM: Normal
; // desired value: 125KHz
; // actual value: 125.000KHz (0.0%)
; void timer0_init(void)
; {
.dbline 26
; TCCR0 = 0x00; //stop
clr R2
out 0x33,R2
.dbline 27
; TCNT0 = 0xE0; //set count
ldi R24,224
out 0x32,R24
.dbline 28
; TCCR0 = 0x01; //start timer
ldi R24,1
out 0x33,R24
.dbline -2
.dbline 29
; }
L2:
.dbline 0 ; func end
ret
.dbend
.area vector(rom, abs)
.org 18
rjmp _timer0_ovf_isr
.area text(rom, con, rel)
.dbfile C:\DOCUME~1\hb\MYDOCU~1\噴嗎機(jī)--2代\單片機(jī)程序\定時(shí)器(方波輸出,TC0控制)\Wave50%.c
.dbfunc e timer0_ovf_isr _timer0_ovf_isr fV
.even
_timer0_ovf_isr::
st -y,R2
st -y,R3
st -y,R4
st -y,R5
st -y,R6
st -y,R7
st -y,R8
st -y,R9
st -y,R16
st -y,R17
st -y,R18
st -y,R19
st -y,R24
st -y,R25
st -y,R26
st -y,R27
st -y,R30
in R2,0x3f
st -y,R2
rcall push_gset2
.dbline -1
.dbline 33
;
; #pragma interrupt_handler timer0_ovf_isr:10
; void timer0_ovf_isr(void)
; {
.dbline 34
; Ddummy++;
ldi R20,1
ldi R21,0
ldi R22,0
ldi R23,0
lds R4,_Ddummy+2
lds R5,_Ddummy+2+1
lds R2,_Ddummy
lds R3,_Ddummy+1
add R2,R20
adc R3,R21
adc R4,R22
adc R5,R23
sts _Ddummy+1,R3
sts _Ddummy,R2
sts _Ddummy+2+1,R5
sts _Ddummy+2,R4
.dbline 35
; if(2*(Ddummy/2)==Ddummy){PORTB &=0xFD;} //PB1腳置低電平
ldi R20,2
ldi R21,0
ldi R22,0
ldi R23,0
st -y,R23
st -y,R22
st -y,R21
st -y,R20
movw R16,R2
movw R18,R4
rcall div32s
ldi R20,2
ldi R21,0
ldi R22,0
ldi R23,0
st -y,R19
st -y,R18
st -y,R17
st -y,R16
movw R16,R20
movw R18,R22
rcall empy32s
lds R4,_Ddummy+2
lds R5,_Ddummy+2+1
lds R2,_Ddummy
lds R3,_Ddummy+1
cp R16,R2
cpc R17,R3
cpc R18,R4
cpc R19,R5
brne L4
.dbline 35
.dbline 35
in R24,0x18
andi R24,253
out 0x18,R24
.dbline 35
rjmp L5
L4:
.dbline 36
; else{PORTB |=0X02;} //PB1腳置高電平
.dbline 36
sbi 0x18,1
.dbline 36
L5:
.dbline 38
;
; if(Ddummy==1) PORTB &=0xFE; //PB0腳置低電平
ldi R20,1
ldi R21,0
ldi R22,0
ldi R23,0
lds R4,_Ddummy+2
lds R5,_Ddummy+2+1
lds R2,_Ddummy
lds R3,_Ddummy+1
cp R2,R20
cpc R3,R21
cpc R4,R22
cpc R5,R23
brne L6
.dbline 38
in R24,0x18
andi R24,254
out 0x18,R24
L6:
.dbline 39
; if(Ddummy >=Settings_PerDotGroupNum){
lds R2,_Settings_PerDotGroupNum
clr R3
clr R4
clr R5
lds R8,_Ddummy+2
lds R9,_Ddummy+2+1
lds R6,_Ddummy
lds R7,_Ddummy+1
cp R6,R2
cpc R7,R3
cpc R8,R4
cpc R9,R5
brlt L8
.dbline 39
.dbline 40
; Ddummy =0; //恢復(fù)計(jì)數(shù)初值
ldi R20,0
ldi R21,0
ldi R22,0
ldi R23,0
sts _Ddummy+1,R21
sts _Ddummy,R20
sts _Ddummy+2+1,R23
sts _Ddummy+2,R22
.dbline 41
; PORTB |=0X01; //PB0腳置高電平
sbi 0x18,0
.dbline 42
; }
L8:
.dbline 43
; TCNT0 = 0xF0; //reload counter value
ldi R24,240
out 0x32,R24
.dbline -2
.dbline 44
; }
L3:
rcall pop_gset2
ld R2,y+
out 0x3f,R2
ld R30,y+
ld R27,y+
ld R26,y+
ld R25,y+
ld R24,y+
ld R19,y+
ld R18,y+
ld R17,y+
ld R16,y+
ld R9,y+
ld R8,y+
ld R7,y+
ld R6,y+
ld R5,y+
ld R4,y+
ld R3,y+
ld R2,y+
.dbline 0 ; func end
reti
.dbend
.dbfunc e adc_init _adc_init fV
.even
_adc_init::
.dbline -1
.dbline 49
;
; //ADC initialisation
; // Conversion time: 6uS
; void adc_init(void)
; {
.dbline 50
; ADCSR = 0x00; //disable adc
clr R2
out 0x6,R2
.dbline 51
; ADMUX = 0x00; //select adc input 0
out 0x7,R2
.dbline 52
; ACSR = 0x00;
out 0x8,R2
.dbline 53
; ADCSR = 0xA9;
ldi R24,169
out 0x6,R24
.dbline -2
.dbline 54
; }
L10:
.dbline 0 ; func end
ret
.dbend
.area vector(rom, abs)
.org 28
rjmp _adc_isr
.area text(rom, con, rel)
.dbfile C:\DOCUME~1\hb\MYDOCU~1\噴嗎機(jī)--2代\單片機(jī)程序\定時(shí)器(方波輸出,TC0控制)\Wave50%.c
.dbfunc e adc_isr _adc_isr fV
.even
_adc_isr::
.dbline -1
.dbline 58
;
; #pragma interrupt_handler adc_isr:15
; void adc_isr(void)
; {
.dbline -2
.dbline 62
; //conversion complete, read value (int) using...
; // value=ADCL; //Read 8 low bits first (important)
; // value|=(int)ADCH << 8; //read 2 high bits and shift into top byte
; }
L11:
.dbline 0 ; func end
reti
.dbend
.dbfunc e init_devices _init_devices fV
.even
_init_devices::
.dbline -1
.dbline 66
;
; //call this routine to initialise all peripherals
; void init_devices(void)
; {
.dbline 68
; //stop errant interrupts until set up
; CLI(); //disable all interrupts
cli
.dbline 69
; port_init();
rcall _port_init
.dbline 70
; timer0_init();
rcall _timer0_init
.dbline 71
; adc_init();
rcall _adc_init
.dbline 73
;
; MCUCR = 0x00;
clr R2
out 0x35,R2
.dbline 74
; GICR = 0x00;
out 0x3b,R2
.dbline 75
; TIMSK = 0x01; //timer interrupt sources
ldi R24,1
out 0x39,R24
.dbline 76
; SEI(); //re-enable interrupts
sei
.dbline -2
.dbline 78
; //all peripherals are now initialised
; }
L12:
.dbline 0 ; func end
ret
.dbend
.dbfunc e main _main fV
.even
_main::
.dbline -1
.dbline 81
;
; void main()
; {
.dbline 82
; init_devices();
rcall _init_devices
.dbline 83
; Ddummy = 0; //臨時(shí)變量,賦初值
ldi R20,0
ldi R21,0
ldi R22,0
ldi R23,0
sts _Ddummy+1,R21
sts _Ddummy,R20
sts _Ddummy+2+1,R23
sts _Ddummy+2,R22
.dbline 84
; Settings_PerDotGroupNum =10; //每10個(gè)墨滴選一個(gè)進(jìn)行打印
ldi R24,10
sts _Settings_PerDotGroupNum,R24
.dbline 85
; Settings_PrintPhase =10;
sts _Settings_PrintPhase,R24
.dbline -2
.dbline 86
; }
L13:
.dbline 0 ; func end
ret
.dbend
.area bss(ram, con, rel)
.dbfile C:\DOCUME~1\hb\MYDOCU~1\噴嗎機(jī)--2代\單片機(jī)程序\定時(shí)器(方波輸出,TC0控制)\Wave50%.c
_Settings_PrintPhase::
.blkb 1
.dbsym e Settings_PrintPhase _Settings_PrintPhase c
_Settings_PerDotGroupNum::
.blkb 1
.dbsym e Settings_PerDotGroupNum _Settings_PerDotGroupNum c
_Ddummy::
.blkb 4
.dbsym e Ddummy _Ddummy L
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -