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

📄 main.s

📁 学习AVR单片机的基础实验程序 适合初学者学习提高
💻 S
字号:
	.module main.c
	.area data(ram, con, rel)
_time_buf::
	.blkb 2
	.area idata
	.byte 32,7
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 5,8
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 22,21
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 0,2
	.area data(ram, con, rel)
	.dbfile D:\AVR\我的程序\DS1302的时钟实验/cfg.h
	.dbsym e time_buf _time_buf A[8:8]c
	.area text(rom, con, rel)
	.dbfile D:\AVR\我的程序\DS1302的时钟实验/cfg.h
	.dbfunc e delay_ms _delay_ms fV
;              i -> R20,R21
;           time -> R16,R17
	.even
_delay_ms::
	xcall push_gset1
	.dbline -1
	.dbline 42
; /***********************************
; *实验目的:熟悉DS1302编程
; *设    计:萧联珠
; *日    期:2007-11-22
; ************************************/
; #include <iom16v.h>
; #include "cfg.h"
; 
; void main()
; {
;  unsigned char i;
;  ds1302_init();
;  uart_init();
;  delay_ms(1000);
;  ds1302_write_time();  //写入时间初始值
;  
;  while(1)
;  { 
;    ds1302_read_time(); //读时间值
;    delay_ms(100);
;    for(i=1;i<7;i++)
;    {
;      while(!(UCSRA&(1<<UDRE)));  //等待发送寄存器为空  
; 	 delay_ms(10);
;      UDR=time_buf[i];   //发送时间数据:年月日周时分秒
;    }
;    delay_ms(100);
;  }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
	.dbline 44
; }
; }
	xjmp L5
L2:
	.dbline 45
	clr R20
	clr R21
L6:
	.dbline 45
L7:
	.dbline 45
	subi R20,255  ; offset = 1
	sbci R21,255
	.dbline 45
	cpi R20,232
	ldi R30,3
	cpc R21,R30
	brlt L6
L3:
	.dbline 44
	subi R16,1
	sbci R17,0
L5:
	.dbline 44
	clr R2
	clr R3
	cp R2,R16
	cpc R3,R17
	brlt L2
	.dbline -2
L1:
	xcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r i 20 I
	.dbsym r time 16 I
	.dbend
	.dbfunc e uart_init _uart_init fV
	.even
_uart_init::
	.dbline -1
	.dbline 50
; }
; }
; }
; }
; }
; }
	.dbline 51
; }
	ldi R24,2
	out 0xb,R24
	.dbline 52
; }
	ldi R24,24
	out 0xa,R24
	.dbline 53
; }
	ldi R24,6
	out 0x20,R24
	.dbline 54
; }
	clr R2
	out 0x20,R2
	.dbline 55
; }
	ldi R24,12
	out 0x9,R24
	.dbline -2
L10:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e ds1302_write_byte _ds1302_write_byte fV
;              i -> R20
;              d -> R18
;           addr -> R16
	.even
_ds1302_write_byte::
	xcall push_gset1
	.dbline -1
	.dbline 60
; }
; }
; }
; }
; }
	.dbline 63
; }
; }
; }
	sbi 0x15,4
	.dbline 66
; }
; }
; }
	sbi 0x14,3
	.dbline 67
; }
	andi R16,254
	.dbline 68
	clr R20
	xjmp L15
L12:
	.dbline 68
; }
	.dbline 69
; }
	sbrs R16,0
	rjmp L16
	.dbline 69
	.dbline 70
; }
	sbi 0x15,3
	.dbline 71
; }
	xjmp L17
L16:
	.dbline 72
; }
	.dbline 73
; }
	cbi 0x15,3
	.dbline 74
; }
L17:
	.dbline 75
	sbi 0x15,2
	.dbline 76
	cbi 0x15,2
	.dbline 77
	lsr R16
	.dbline 78
L13:
	.dbline 68
	inc R20
L15:
	.dbline 68
	cpi R20,8
	brlo L12
	.dbline 81
; }
; }
; }
; }
; }
; }
; }
	sbi 0x14,3
	.dbline 82
	clr R20
	xjmp L21
L18:
	.dbline 82
; }
	.dbline 83
; }
	sbrs R18,0
	rjmp L22
	.dbline 83
	.dbline 84
; }
	sbi 0x15,3
	.dbline 85
; }
	xjmp L23
L22:
	.dbline 86
; }
	.dbline 87
; }
	cbi 0x15,3
	.dbline 88
; }
L23:
	.dbline 89
	sbi 0x15,2
	.dbline 90
	cbi 0x15,2
	.dbline 91
	lsr R18
	.dbline 92
L19:
	.dbline 82
	inc R20
L21:
	.dbline 82
	cpi R20,8
	brlo L18
	.dbline 93
; }
; }
; }
; }
; }
	cbi 0x15,4
	.dbline -2
L11:
	xcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r i 20 c
	.dbsym r d 18 c
	.dbsym r addr 16 c
	.dbend
	.dbfunc e ds1302_read_byte _ds1302_read_byte fc
;           temp -> R20
;              i -> R22
;           addr -> R16
	.even
_ds1302_read_byte::
	xcall push_gset2
	.dbline -1
	.dbline 97
; }
; }
; }
; }
	.dbline 101
; }
; }
; }
; }
	sbi 0x15,4
	.dbline 104
; }
; }
; }
	sbi 0x14,3
	.dbline 105
; }
	ori R16,1
	.dbline 106
	clr R22
	xjmp L28
L25:
	.dbline 106
; }
	.dbline 107
; }
	sbrs R16,0
	rjmp L29
	.dbline 107
	.dbline 108
; }
	sbi 0x15,3
	.dbline 109
; }
	xjmp L30
L29:
	.dbline 110
; }
	.dbline 111
; }
	cbi 0x15,3
	.dbline 112
; }
L30:
	.dbline 113
	sbi 0x15,2
	.dbline 114
	cbi 0x15,2
	.dbline 115
	lsr R16
	.dbline 116
L26:
	.dbline 106
	inc R22
L28:
	.dbline 106
	cpi R22,8
	brlo L25
	.dbline 119
; }
; }
; }
; }
; }
; }
; }
	cbi 0x14,3
	.dbline 120
	clr R22
	xjmp L34
L31:
	.dbline 120
; }
	.dbline 121
; }
	lsr R20
	.dbline 122
; }
	sbis 0x13,3
	rjmp L35
	.dbline 122
	.dbline 123
; }
	ori R20,128
	.dbline 124
; }
	xjmp L36
L35:
	.dbline 125
; }
	.dbline 126
; }
	andi R20,127
	.dbline 127
; }
L36:
	.dbline 128
	sbi 0x15,2
	.dbline 129
	cbi 0x15,2
	.dbline 130
L32:
	.dbline 120
	inc R22
L34:
	.dbline 120
	cpi R22,8
	brlo L31
	.dbline 132
; }
; }
; }
; }
; }
	cbi 0x15,4
	.dbline 133
; }
	mov R16,R20
	.dbline -2
L24:
	xcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r temp 20 c
	.dbsym r i 22 c
	.dbsym r addr 16 c
	.dbend
	.dbfunc e ds1302_write_time _ds1302_write_time fV
	.even
_ds1302_write_time::
	.dbline -1
	.dbline 137
; }
; }
; }
; }
	.dbline 139
; }
; }
	clr R18
	ldi R16,142
	xcall _ds1302_write_byte
	.dbline 140
; }
	ldi R18,128
	ldi R16,128
	xcall _ds1302_write_byte
	.dbline 142
; }
; }
	lds R18,_time_buf+1
	ldi R16,140
	xcall _ds1302_write_byte
	.dbline 143
; }
	lds R18,_time_buf+2
	ldi R16,136
	xcall _ds1302_write_byte
	.dbline 144
; }
	lds R18,_time_buf+3
	ldi R16,134
	xcall _ds1302_write_byte
	.dbline 145
; }
	lds R18,_time_buf+7
	ldi R16,138
	xcall _ds1302_write_byte
	.dbline 146
; }
	lds R18,_time_buf+4
	ldi R16,132
	xcall _ds1302_write_byte
	.dbline 147
; }
	lds R18,_time_buf+5
	ldi R16,130
	xcall _ds1302_write_byte
	.dbline 148
; }
	lds R18,_time_buf+6
	ldi R16,128
	xcall _ds1302_write_byte
	.dbline 149
; }
	lds R18,_time_buf+7
	ldi R16,138
	xcall _ds1302_write_byte
	.dbline 150
; }
	ldi R18,128
	ldi R16,142
	xcall _ds1302_write_byte
	.dbline -2
L37:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e ds1302_read_time _ds1302_read_time fV
	.even
_ds1302_read_time::
	.dbline -1
	.dbline 154
; }
; }
; }
; }
	.dbline 156
; }
; }
	ldi R16,140
	xcall _ds1302_read_byte
	sts _time_buf+1,R16
	.dbline 157
; }
	ldi R16,136
	xcall _ds1302_read_byte
	sts _time_buf+2,R16
	.dbline 158
; }
	ldi R16,134
	xcall _ds1302_read_byte
	sts _time_buf+3,R16
	.dbline 159
; }
	ldi R16,132
	xcall _ds1302_read_byte
	sts _time_buf+4,R16
	.dbline 160
; }
	ldi R16,130
	xcall _ds1302_read_byte
	sts _time_buf+5,R16
	.dbline 161
; }
	ldi R16,128
	xcall _ds1302_read_byte
	mov R24,R16
	andi R24,127
	sts _time_buf+6,R24
	.dbline 162
; }
	ldi R16,138
	xcall _ds1302_read_byte
	sts _time_buf+7,R16
	.dbline -2
L46:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e ds1302_init _ds1302_init fV
	.even
_ds1302_init::
	.dbline -1
	.dbline 166
; }
; }
; }
; }
	.dbline 168
; }
; }
	cbi 0x15,4
	.dbline 169
; }
	cbi 0x15,2
	.dbline 170
; }
	sbi 0x14,4
	.dbline 171
; }
	sbi 0x14,2
	.dbline -2
L54:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfile D:\AVR\我的程序\DS1302的时钟实验\main.c
	.dbfunc e main _main fV
;              i -> R20
	.even
_main::
	.dbline -1
	.dbline 10
	.dbline 12
	xcall _ds1302_init
	.dbline 13
	xcall _uart_init
	.dbline 14
	ldi R16,1000
	ldi R17,3
	xcall _delay_ms
	.dbline 15
	xcall _ds1302_write_time
	xjmp L57
L56:
	.dbline 18
	.dbline 19
	xcall _ds1302_read_time
	.dbline 20
	ldi R16,100
	ldi R17,0
	xcall _delay_ms
	.dbline 21
	ldi R20,1
	xjmp L62
X0:
	.dbline 22
L63:
	.dbline 23
L64:
	.dbline 23
	sbis 0xb,5
	rjmp L63
	.dbline 24
	ldi R16,10
	ldi R17,0
	xcall _delay_ms
	.dbline 25
	ldi R24,<_time_buf
	ldi R25,>_time_buf
	mov R30,R20
	clr R31
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	out 0xc,R2
	.dbline 26
L60:
	.dbline 21
	inc R20
L62:
	.dbline 21
	cpi R20,7
	brlo L64
	.dbline 27
	ldi R16,100
	ldi R17,0
	xcall _delay_ms
	.dbline 28
L57:
	.dbline 17
	xjmp L56
X1:
	.dbline -2
L55:
	.dbline 0 ; func end
	ret
	.dbsym r i 20 c
	.dbend

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -