📄 btm48.s
字号:
.module btm48.c
.area data(ram, con, rel)
_shu::
.blkb 2
.area idata
.byte 192,249
.area data(ram, con, rel)
.blkb 2
.area idata
.byte 164,176
.area data(ram, con, rel)
.blkb 2
.area idata
.byte 153,146
.area data(ram, con, rel)
.blkb 2
.area idata
.byte 130,248
.area data(ram, con, rel)
.blkb 2
.area idata
.byte 128,144
.area data(ram, con, rel)
.blkb 2
.area idata
.byte 191,255
.area data(ram, con, rel)
.dbfile D:\ele\AVR\ICC\biaotao\biaotouM48/bt.h
.dbsym e shu _shu A[12:12]c
_tm::
.blkb 2
.area idata
.byte 11,11
.area data(ram, con, rel)
.dbfile D:\ele\AVR\ICC\biaotao\biaotouM48/bt.h
.blkb 2
.area idata
.byte 11,11
.area data(ram, con, rel)
.dbfile D:\ele\AVR\ICC\biaotao\biaotouM48/bt.h
.dbsym e tm _tm A[4:4]c
.area text(rom, con, rel)
.dbfile D:\ele\AVR\ICC\biaotao\biaotouM48/bt.h
.dbfunc e port_init _port_init fV
.even
_port_init::
.dbline -1
.dbline 56
; #include <iom48v.h>
; #include "bt.h"
; #include "PT100.h"
; #include <macros.h>
; #include <eeprom.h>
;
; #define uchar unsigned char
; #define unit unsigned int
; #define ulong unsigned long
;
;
;
; #define xtal 8
; #define fosc 8000000 //晶振8MHZ
; #define baud 9600 //波特率
;
;
; #define VTest PORTC|=0X80 //测量端口电压
; #define TestIO ((PINB&0X01)==0X01) //测量频率
; unit StandartVref=0;
;
; //Watchdog initialize
; // prescale: 16K
; void watchdog_init(void)
; {
; WDR(); //this prevents a timout on enabling
; WDTCSR = 0x0B; //WATCHDOG ENABLED - dont forget to issue WDRs
; }
;
;
;
;
; /* 字符输出函数 */
; void putchar(unsigned char c)
; {
; while (!(UCSR0A&(1<<UDRE0)))WDR();
; UDR0=c;
; // del(200);
; }
;
; //UART0 initialize
; // desired baud rate: 9600
; // actual: baud rate:9615 (0.2%)
; void uart0_init(void)
; {
; UCSR0B = 0x00; //disable while setting baud rate
; UCSR0A = 0x02;
; UCSR0C = 0x06;
; UBRR0L = 0x67; //set baud rate lo
; UBRR0H = 0x00; //set baud rate hi
; UCSR0B = 0x18;
; }
;
;
; unsigned long adc_rel[8];//AD转换结果
; unsigned char adc_mux;//AD通道
.dbline 57
;
ldi R24,48
out 0x5,R24
.dbline 58
; //ADC initialize
ldi R24,60
out 0x4,R24
.dbline 59
; // Cpbversipb time: 3uS
ldi R24,6
out 0x8,R24
.dbline 60
; void adc_init(void)
ldi R24,15
out 0x7,R24
.dbline 61
; {
ldi R24,223
out 0xb,R24
.dbline 62
; ADCSRA = 0x00; //disable adc
ldi R24,216
out 0xa,R24
.dbline -2
L1:
.dbline 0 ; func end
ret
.dbend
.dbfunc e DAT _DAT fV
; x -> R16
.even
_DAT::
.dbline -1
.dbline 66
; ADMUX = 0xC0; //select adc input 0 00-ref 01-avcc 11-2.56
; ACSR = 0x80;
; ADCSRA=(1<<ADEN)|(1<<ADSC)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0) ;//64分频
; }
.dbline 67
mov R24,R16
andi R24,1
cpi R24,1
brne L3
.dbline 67
sbi 0xb,6
rjmp L4
L3:
.dbline 67
;
cbi 0xb,6
L4:
.dbline 68
mov R24,R16
andi R24,2
cpi R24,2
brne L5
.dbline 68
sbi 0xb,7
rjmp L6
L5:
.dbline 68
;
cbi 0xb,7
L6:
.dbline 69
mov R24,R16
andi R24,4
cpi R24,4
brne L7
.dbline 69
sbi 0x5,5
rjmp L8
L7:
.dbline 69
; unit cw(uchar mux) ///*****检测信号*****///
cbi 0x5,5
L8:
.dbline 70
mov R24,R16
andi R24,8
cpi R24,8
brne L9
.dbline 70
sbi 0x8,1
rjmp L10
L9:
.dbline 70
; {
cbi 0x8,1
L10:
.dbline 71
mov R24,R16
andi R24,16
cpi R24,16
brne L11
.dbline 71
sbi 0x8,2
rjmp L12
L11:
.dbline 71
; ADMUX=(1<<REFS0)|(mux&0x0f);
cbi 0x8,2
L12:
.dbline 72
mov R24,R16
andi R24,32
cpi R24,32
brne L13
.dbline 72
sbi 0xb,4
rjmp L14
L13:
.dbline 72
; ADCSRA|=0xC0;
cbi 0xb,4
L14:
.dbline 73
mov R24,R16
andi R24,64
cpi R24,64
brne L15
.dbline 73
sbi 0xb,3
rjmp L16
L15:
.dbline 73
; del(200);
cbi 0xb,3
L16:
.dbline 74
mov R24,R16
andi R24,128
cpi R24,128
brne L17
.dbline 74
sbi 0x5,4
rjmp L18
L17:
.dbline 74
cbi 0x5,4
L18:
.dbline -2
L2:
.dbline 0 ; func end
ret
.dbsym r x 16 c
.dbend
.dbfunc e del _del fV
; time -> R16,R17
.even
_del::
.dbline -1
.dbline 80
; return(ADC);
; }
;
;
;
; unit cw1(uchar mux) ///*****检测信号*****///
; {
L20:
.dbline 82
; unit adc_rel=0,a;
; uchar i;
.dbline 83
; for(i=0;i<5;i++)
subi R16,1
sbci R17,0
.dbline 84
; {
L21:
.dbline 85
; adc_rel+=cw(mux);
ldi R24,1
ldi R25,0
cp R24,R16
cpc R25,R17
brlt L20
.dbline -2
L19:
.dbline 0 ; func end
ret
.dbsym r time 16 I
.dbend
.dbfunc e dot _dot fV
; dou -> R20
.even
_dot::
rcall push_gset1
mov R20,R16
.dbline -1
.dbline 89
; WDR();
; }
; return (unit)(adc_rel/5);
; }
.dbline 90
;
clr R21
cpi R20,1
ldi R30,0
cpc R21,R30
breq L27
cpi R20,2
ldi R30,0
cpc R21,R30
breq L28
cpi R20,3
ldi R30,0
cpc R21,R30
breq L29
cpi R20,4
ldi R30,0
cpc R21,R30
breq L30
rjmp L24
X0:
.dbline 91
; void cwStand(uchar mux) ///*****检测信号*****///
L27:
.dbline 92
; {
sbi 0x5,2
.dbline 92
ldi R16,127
rcall _DAT
.dbline 92
ldi R16,226
ldi R17,0
rcall _del
.dbline 92
cbi 0x5,2
.dbline 92
ldi R16,255
rcall _DAT
.dbline 92
ldi R16,5
ldi R17,0
rcall _del
.dbline 92
rjmp L25
L28:
.dbline 93
; unit adc_rel=0,a;
sbi 0x5,3
.dbline 93
ldi R16,127
rcall _DAT
.dbline 93
ldi R16,226
ldi R17,0
rcall _del
.dbline 93
cbi 0x5,3
.dbline 93
ldi R16,255
rcall _DAT
.dbline 93
ldi R16,5
ldi R17,0
rcall _del
.dbline 93
rjmp L25
L29:
.dbline 94
; uchar i;
sbi 0x8,0
.dbline 94
ldi R16,127
rcall _DAT
.dbline 94
ldi R16,226
ldi R17,0
rcall _del
.dbline 94
cbi 0x8,0
.dbline 94
ldi R16,255
rcall _DAT
.dbline 94
ldi R16,5
ldi R17,0
rcall _del
.dbline 94
rjmp L25
L30:
.dbline 95
;
sbi 0x8,3
.dbline 95
ldi R16,127
rcall _DAT
.dbline 95
ldi R16,226
ldi R17,0
rcall _del
.dbline 95
cbi 0x8,3
.dbline 95
ldi R16,255
rcall _DAT
.dbline 95
ldi R16,5
ldi R17,0
rcall _del
.dbline 95
L24:
L25:
.dbline -2
L23:
rcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r dou 20 c
.dbend
.dbfunc e A _A fV
.even
_A::
.dbline -1
.dbline 100
; ADCSRA = 0x00; //disable adc
; ADMUX = 0x40; //select adc input 0 00-ref 01-avcc 11-2.56
; ACSR = 0x80;
; ADCSRA=(1<<ADEN)|(1<<ADSC)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0) ;//64分频
; for(i=0;i<5;i++)
.dbline 101
; {
sbi 0x5,2
.dbline 101
ldi R24,<_shu
ldi R25,>_shu
lds R30,_tm
clr R31
add R30,R24
adc R31,R25
ldd R16,z+0
rcall _DAT
.dbline 101
ldi R16,180
ldi R17,0
rcall _del
.dbline 101
cbi 0x5,2
.dbline 101
ldi R16,255
rcall _DAT
.dbline 101
ldi R16,5
ldi R17,0
rcall _del
.dbline 101
wdr
.dbline 102
; ADMUX=(1<<REFS0)|(mux&0x0f);
sbi 0x5,3
.dbline 102
ldi R24,<_shu
ldi R25,>_shu
lds R30,_tm+1
clr R31
add R30,R24
adc R31,R25
ldd R16,z+0
rcall _DAT
.dbline 102
ldi R16,180
ldi R17,0
rcall _del
.dbline 102
cbi 0x5,3
.dbline 102
ldi R16,255
rcall _DAT
.dbline 102
ldi R16,5
ldi R17,0
rcall _del
.dbline 102
wdr
.dbline 103
; ADCSRA|=0x40;
sbi 0x8,0
.dbline 103
ldi R24,<_shu
ldi R25,>_shu
lds R30,_tm+2
clr R31
add R30,R24
adc R31,R25
ldd R16,z+0
rcall _DAT
.dbline 103
ldi R16,180
ldi R17,0
rcall _del
.dbline 103
cbi 0x8,0
.dbline 103
ldi R16,255
rcall _DAT
.dbline 103
ldi R16,5
ldi R17,0
rcall _del
.dbline 103
wdr
.dbline 104
; del(200);
sbi 0x8,3
.dbline 104
ldi R24,<_shu
ldi R25,>_shu
lds R30,_tm+3
clr R31
add R30,R24
adc R31,R25
ldd R16,z+0
rcall _DAT
.dbline 104
ldi R16,180
ldi R17,0
rcall _del
.dbline 104
cbi 0x8,3
.dbline 104
ldi R16,255
rcall _DAT
.dbline 104
ldi R16,5
ldi R17,0
rcall _del
.dbline 104
wdr
.dbline 105
; adc_rel=ADC;
lds R16,_doudian
rcall _dot
.dbline -2
L31:
.dbline 0 ; func end
ret
.dbend
.dbfunc e bee _bee fV
; j -> R20,R21
; j1 -> R12,R13
; spfreq -> R22,R23
; k -> R14,R15
; tone -> R20,R21
; soundlong -> R10,R11
.even
_bee::
rcall push_gset5
movw R20,R18
movw R10,R16
.dbline -1
.dbline 109
; }
; adc_rel=0;
;
; for(i=0;i<5;i++)
.dbline 111
; {
; ADMUX=(1<<REFS0)|(mux&0x0f);
ldi R16,15000
ldi R17,58
movw R18,R20
rcall div16u
movw R22,R16
lsr R23
ror R22
.dbline 112
; ADCSRA|=0x40;
clr R20
clr R21
rjmp L39
L36:
.dbline 113
; del(200);
clr R12
clr R13
rjmp L43
L40:
.dbline 114
; adc_rel+=ADC;
.dbline 115
; WDR();
cbi 0x5,6
.dbline 116
clr R14
clr R15
rjmp L47
L44:
.dbline 116
L45:
.dbline 116
movw R24,R14
adiw R24,1
movw R14,R24
L47:
.dbline 116
; }
cp R14,R22
cpc R15,R23
brlo L44
.dbline 117
; StandartVref=adc_rel;//电压的参考值 adc_rel>>10
sbi 0x5,7
.dbline 118
clr R14
clr R15
rjmp L51
L48:
.dbline 118
L49:
.dbline 118
movw R24,R14
adiw R24,1
movw R14,R24
L51:
.dbline 118
cp R14,R22
cpc R15,R23
brlo L48
.dbline 119
wdr
.dbline 120
L41:
.dbline 113
movw R24,R12
adiw R24,1
movw R12,R24
L43:
.dbline 113
movw R24,R12
cpi R24,20
ldi R30,0
cpc R25,R30
brlo L40
L37:
.dbline 112
subi R20,255 ; offset = 1
sbci R21,255
L39:
.dbline 112
cp R20,R10
cpc R21,R11
brlo L36
.dbline 121
; }
;
; //call this routine to initialize all peripherals
; void init_devices(void)
sbi 0x5,7
.dbline -2
L35:
rcall pop_gset5
.dbline 0 ; func end
ret
.dbsym r j 20 i
.dbsym r j1 12 i
.dbsym r spfreq 22 i
.dbsym r k 14 i
.dbsym r tone 20 i
.dbsym r soundlong 10 i
.dbend
.dbfunc e delay _delay fV
; i2 -> R20,R21
; n -> R22,R23
.even
_delay::
rcall push_gset2
movw R22,R16
.dbline -1
.dbline 127
; {
; //stop errant interrupts until set up
; CLI(); //disable all interrupts
; port_init();
; watchdog_init();
; adc_init();
.dbline 128
;
clr R20
clr R21
rjmp L54
L53:
.dbline 130
.dbline 131
rcall _A
.dbline 131
subi R20,255 ; offset = 1
sbci R21,255
.dbline 131
wdr
.dbline 132
L54:
.dbline 129
; MCUCR = 0x00;
cp R20,R22
cpc R21,R23
brlo L53
.dbline -2
L52:
rcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r i2 20 i
.dbsym r n 22 i
.dbend
.dbfunc e show _show fV
; i -> R20
; dat -> R22,R23
; n -> R10
.even
_show::
rcall push_gset3
movw R22,R18
mov R10,R16
.dbline -1
.dbline 137
; EICRA = 0x00; //extended ext ints
; EIMSK = 0x00;
;
; TIMSK0 = 0x00; //timer 0 interrupt sources
; TIMSK1 = 0x00; //timer 1 interrupt sources
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -