📄 main.s
字号:
.module main.c
.area text(rom, con, rel)
.dbfile D:\时钟芯片\1302\1302-162\main.c
.dbfunc e port_init _port_init fV
.even
_port_init::
.dbline -1
.dbline 12
; //ICC-AVR application builder : 2005-11-2 16:28:30
; // Target : 8515
; // Crystal: 4.0000Mhz
; #include <io8515v.h>
; #include <macros.h>
; #include <162-1302.h>
; #include <function.h>
; uchar temh_d;
; uchar teml_d;
; uchar temm_d;
; void port_init(void)
; {
.dbline 13
; PORTA = 0x00;
clr R2
out 0x1b,R2
.dbline 14
; DDRA = 0xFF;
ldi R24,255
out 0x1a,R24
.dbline 15
; PORTB = 0xFF;
out 0x18,R24
.dbline 16
; DDRB = 0xFF;
out 0x17,R24
.dbline 17
; PORTC = 0xFF;
out 0x15,R24
.dbline 18
; DDRC = 0xFF;
out 0x14,R24
.dbline 19
; PORTD = 0x00;
out 0x12,R2
.dbline 20
; DDRD = 0x00;
out 0x11,R2
.dbline -2
L1:
.dbline 0 ; func end
ret
.dbend
.dbfunc e init_devices _init_devices fV
.even
_init_devices::
.dbline -1
.dbline 23
; } //call this routine to initialize all peripherals
; void init_devices(void)
; {
.dbline 25
; //stop errant interrupts until set up
; CLI(); //disable all interrupts
cli
.dbline 26
; port_init();
rcall _port_init
.dbline 27
; MCUCR = 0x00;
clr R2
out 0x35,R2
.dbline 28
; GIMSK = 0x00;
out 0x3b,R2
.dbline 29
; TIMSK = 0x00;
out 0x39,R2
.dbline 30
; SEI(); //re-enable interrupts
sei
.dbline -2
L2:
.dbline 0 ; func end
ret
.dbend
.dbfunc e main _main fV
; temm -> R20
; count -> R22
; a -> R10
; temh -> R12
; teml -> R14
; th -> R12
; tl -> R20
; s -> R22
; i -> y+2
.even
_main::
sbiw R28,3
.dbline -1
.dbline 37
; //all peripherals are now initialized
; }
; /******************************************************
; 主程序
; ******************************************************/
; void main(void)
; {
.dbline 40
; uchar s,i,th,tl;
; uchar temh,teml,a,count,temm;
; init_devices();
rcall _init_devices
.dbline 41
; init_1302();
rcall _init_1302
.dbline 42
; init_1302();
rcall _init_1302
.dbline 43
; init_lcd() ;
rcall _init_lcd
.dbline 44
; init_lcd() ;
rcall _init_lcd
.dbline 45
; init_time();
rcall _init_time
rjmp L5
L4:
.dbline 47
; while(1)
; {
.dbline 48
; LCD_set_xy(0,0);
clr R18
clr R16
rcall _LCD_set_xy
.dbline 49
; for(i=0;i<9;i+=2)
clr R0
std y+2,R0
rjmp L10
L7:
.dbline 50
.dbline 51
ldd R2,y+2
clr R3
ldi R16,137
sub R16,R2
sbc R17,R3
rcall _read_data
mov R22,R16
.dbline 52
mov R20,R22
andi R20,15
.dbline 53
mov R24,R22
swap R24
andi R24,#0x0F
mov R12,R24
.dbline 54
mov R16,R24
subi R16,208 ; addi 48
rcall _LCD_write_char
.dbline 55
mov R16,R20
subi R16,208 ; addi 48
rcall _LCD_write_char
.dbline 56
ldi R16,58
rcall _LCD_write_char
.dbline 57
L8:
.dbline 49
ldd R24,y+2
subi R24,254 ; addi 2
std y+2,R24
L10:
.dbline 49
ldd R24,y+2
cpi R24,9
brlo L7
.dbline 58
; {
; s=read_data(0x89-i);
; tl=s&0x0f;
; th=(s>>4);
; LCD_write_char(th+48);
; LCD_write_char(tl+48);
; LCD_write_char(':');
; }
; s=read_data(0x8b);
ldi R16,139
rcall _read_data
mov R22,R16
.dbline 59
; tl=s&0x0f;
mov R20,R22
andi R20,15
.dbline 60
; LCD_write_char(tl+48);
mov R16,R20
subi R16,208 ; addi 48
rcall _LCD_write_char
.dbline 62
;
; a=init_1820(); //复位18b20
rcall _init_1820
mov R10,R16
.dbline 63
; if(a==0x01)
cpi R16,1
brne L11
.dbline 64
; {
.dbline 65
; LCD_write_string(0,1,"wrong"); //初始化失败
ldi R24,<L13
ldi R25,>L13
std y+1,R25
std y+0,R24
ldi R18,1
clr R16
rcall _LCD_write_string
.dbline 66
; }
rjmp L12
L11:
.dbline 68
; else
; {
.dbline 69
; LCD_write_string(0,1,"temper is");//初始化成功
ldi R24,<L14
ldi R25,>L14
std y+1,R25
std y+0,R24
ldi R18,1
clr R16
rcall _LCD_write_string
.dbline 70
; }
L12:
.dbline 71
; write_1820(0xCC); // SKIP THE ROM
ldi R16,204
rcall _write_1820
.dbline 72
; write_1820(0x44); //启动温度转换
ldi R16,68
rcall _write_1820
.dbline 73
; for(i=0;i<200;i++) //每次转换需要延时200ms以上
clr R0
std y+2,R0
rjmp L18
L15:
.dbline 74
ldi R16,200
rcall _delay
L16:
.dbline 73
ldd R0,y+2
inc R0
std y+2,R0
L18:
.dbline 73
ldd R24,y+2
cpi R24,200
brlo L15
.dbline 75
rcall _init_1820
mov R10,R16
.dbline 76
ldi R16,204
rcall _write_1820
.dbline 77
ldi R16,190
rcall _write_1820
.dbline 78
rcall _read_1820
mov R14,R16
.dbline 79
rcall _read_1820
mov R12,R16
.dbline 80
mov R20,R14
.dbline 81
andi R20,15
.dbline 82
mov R24,R14
swap R24
andi R24,#0x0F
mov R14,R24
.dbline 83
mov R24,R12
andi R24,#0x0F
swap R24
mov R12,R24
.dbline 84
mov R22,R14
or R22,R24
.dbline 85
ldi R17,10
mov R16,R22
rcall div8u
sts _temh_d,R16
.dbline 86
mov R18,R20
clr R19
ldi R16,6
ldi R17,0
rcall mpy16s
ldi R18,10
ldi R19,0
rcall div16s
sts _temm_d,R16
.dbline 87
ldi R17,10
mov R16,R22
rcall mod8u
sts _teml_d,R16
.dbline 88
ldi R16,200
rcall _delay
.dbline 89
ldi R18,1
ldi R16,10
rcall _LCD_set_xy
.dbline 90
lds R16,_temh_d
subi R16,208 ; addi 48
rcall _LCD_write_char
.dbline 91
ldi R18,1
ldi R16,11
rcall _LCD_set_xy
.dbline 92
lds R16,_teml_d
subi R16,208 ; addi 48
rcall _LCD_write_char
.dbline 93
ldi R18,1
ldi R16,12
rcall _LCD_set_xy
.dbline 94
ldi R16,46
rcall _LCD_write_char
.dbline 95
ldi R18,1
ldi R16,13
rcall _LCD_set_xy
.dbline 96
lds R16,_temm_d
subi R16,208 ; addi 48
rcall _LCD_write_char
.dbline 97
ldi R24,<L19
ldi R25,>L19
std y+1,R25
std y+0,R24
ldi R18,1
ldi R16,14
rcall _LCD_write_string
.dbline 98
L5:
.dbline 46
rjmp L4
X0:
.dbline -2
L3:
adiw R28,3
.dbline 0 ; func end
ret
.dbsym r temm 20 c
.dbsym r count 22 c
.dbsym r a 10 c
.dbsym r temh 12 c
.dbsym r teml 14 c
.dbsym r th 12 c
.dbsym r tl 20 c
.dbsym r s 22 c
.dbsym l i 2 c
.dbend
.area bss(ram, con, rel)
.dbfile D:\时钟芯片\1302\1302-162\main.c
_temm_d::
.blkb 1
.dbsym e temm_d _temm_d c
_teml_d::
.blkb 1
.dbsym e teml_d _teml_d c
_temh_d::
.blkb 1
.dbsym e temh_d _temh_d c
.area data(ram, con, rel)
.dbfile D:\时钟芯片\1302\1302-162\main.c
L19:
.blkb 3
.area idata
.byte 96,'c,0
.area data(ram, con, rel)
.dbfile D:\时钟芯片\1302\1302-162\main.c
L14:
.blkb 10
.area idata
.byte 't,'e,'m,'p,'e,'r,32,'i,'s,0
.area data(ram, con, rel)
.dbfile D:\时钟芯片\1302\1302-162\main.c
L13:
.blkb 6
.area idata
.byte 'w,'r,'o,'n,'g,0
.area data(ram, con, rel)
.dbfile D:\时钟芯片\1302\1302-162\main.c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -