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

📄 btm48.s

📁 AVR ICC基于AVR单片机的LED显示程序!
💻 S
📖 第 1 页 / 共 2 页
字号:
	.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 + -