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

📄 cscj_timer1_cd.s

📁 超声测距c语言程序 利用定时器产生40khz站空比50 的方波 通过检测收到超声波的时间来测距
💻 S
📖 第 1 页 / 共 2 页
字号:
	ldi R24,16
	mul R24,R20
	movw R30,R0
	add R30,R2
	adc R31,R3
	add R30,R10
	adc R31,R11
	adiw R30,1
	lpm R16,Z
	xcall _write_data
	.dbline 208
L58:
	.dbline 200
	inc R22
L60:
	.dbline 200
	cpi R22,8
	brlo L57
	.dbline 209
L54:
	.dbline 198
	inc R20
L56:
	.dbline 198
	cpi R20,64
	brsh X2
	xjmp L53
X2:
	.dbline 210
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
	ldi R16,54
	xcall _write_com
	.dbline 211
; }
	ldi R16,500
	ldi R17,1
	xcall _delay_ms
	.dbline -2
	.dbline 212
; }
L44:
	xcall pop_gset3
	.dbline 0 ; func end
	ret
	.dbsym r j 20 c
	.dbsym r i 22 c
	.dbsym r img 10 pc
	.dbend
	.dbfunc e con_disp _con_disp fV
;              j -> R20
;              i -> R14
;              x -> R22
;             y0 -> R10
;             x0 -> R12
;             ee -> y+10
	.even
_con_disp::
	xcall push_arg4
	xcall push_gset5
	mov R12,R18
	ldd R10,y+14
	ldd R22,y+16
	.dbline -1
	.dbline 221
; }
; }
; }
; }
; }
; }
; }
; }
; }
	.dbline 223
; }
; }
	clr R20
	xjmp L65
L62:
	.dbline 224
; }
	.dbline 225
; }
	clr R14
	xjmp L69
L66:
	.dbline 226
	.dbline 227
	ldi R16,52
	xcall _write_com
	.dbline 228
	mov R16,R10
	add R16,R20
	xcall _write_com
	.dbline 229
	mov R16,R12
	add R16,R14
	xcall _write_com
	.dbline 230
	ldi R16,48
	xcall _write_com
	.dbline 231
	ldd R16,y+10
	xcall _write_data
	.dbline 232
	ldd R16,y+10
	xcall _write_data
	.dbline 233
L67:
	.dbline 225
	inc R14
L69:
	.dbline 225
	cp R14,R22
	brlo L66
	.dbline 234
L63:
	.dbline 223
	inc R20
L65:
	.dbline 223
	cpi R20,16
	brlo L62
	.dbline 235
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
	ldi R16,54
	xcall _write_com
	.dbline -2
	.dbline 236
; }
L61:
	xcall pop_gset5
	adiw R28,4
	.dbline 0 ; func end
	ret
	.dbsym r j 20 c
	.dbsym r i 14 c
	.dbsym r x 22 c
	.dbsym r y0 10 c
	.dbsym r x0 12 c
	.dbsym l ee 10 c
	.dbend
	.dbfunc e delay_1us _delay_1us fV
	.even
_delay_1us::
	.dbline -1
	.dbline 246
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
	.dbline 247
; }
	nop
	.dbline -2
	.dbline 248
; }
L70:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e delay_us _delay_us fV
;              i -> R20,R21
;              n -> R22,R23
	.even
_delay_us::
	xcall push_gset2
	movw R22,R16
	.dbline -1
	.dbline 251
; }
; }
; }
	.dbline 252
; }
	clr R20
	clr R21
	.dbline 253
; }
	xjmp L75
L72:
	.dbline 254
	xcall _delay_1us
L73:
	.dbline 253
	subi R20,255  ; offset = 1
	sbci R21,255
L75:
	.dbline 253
	cp R20,R22
	cpc R21,R23
	brlo L72
	.dbline -2
	.dbline 255
; }
; }
L71:
	xcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r i 20 i
	.dbsym r n 22 i
	.dbend
	.dbfunc e delay_1ms _delay_1ms fV
;              i -> R16,R17
	.even
_delay_1ms::
	.dbline -1
	.dbline 258
; }
; }
; }
	.dbline 260
	clr R16
	clr R17
	xjmp L80
L77:
	.dbline 260
L78:
	.dbline 260
	subi R16,255  ; offset = 1
	sbci R17,255
L80:
	.dbline 260
; }
; }
	cpi R16,116
	ldi R30,4
	cpc R17,R30
	brlo L77
	.dbline -2
	.dbline 261
; }
L76:
	.dbline 0 ; func end
	ret
	.dbsym r i 16 i
	.dbend
	.dbfunc e delay_ms _delay_ms fV
;              i -> R20,R21
;              n -> R22,R23
	.even
_delay_ms::
	xcall push_gset2
	movw R22,R16
	.dbline -1
	.dbline 264
; }
; }
; }
	.dbline 265
; }
	clr R20
	clr R21
	.dbline 266
; }
	xjmp L85
L82:
	.dbline 267
	xcall _delay_1ms
L83:
	.dbline 266
	subi R20,255  ; offset = 1
	sbci R21,255
L85:
	.dbline 266
	cp R20,R22
	cpc R21,R23
	brlo L82
	.dbline -2
	.dbline 268
; }
; }
L81:
	xcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r i 20 i
	.dbsym r n 22 i
	.dbend
	.area vector(rom, abs)
	.org 12
	jmp _int2
	.area text(rom, con, rel)
	.dbfile E:\重新整理的文件\控制类\超声波检测电路\程序\avr/lcd12864.h
	.area vector(rom, abs)
	.org 56
	jmp _timer1
	.area text(rom, con, rel)
	.dbfile E:\重新整理的文件\控制类\超声波检测电路\程序\avr/lcd12864.h
	.area data(ram, con, rel)
	.dbfile E:\重新整理的文件\控制类\超声波检测电路\程序\avr/lcd12864.h
_flag::
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile E:\重新整理的文件\控制类\超声波检测电路\程序\avr/lcd12864.h
	.dbfile E:\重新整理的文件\控制类\超声波检测电路\程序\avr\cscj_timer1_cd.C
	.dbsym e flag _flag c
_aa::
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile E:\重新整理的文件\控制类\超声波检测电路\程序\avr\cscj_timer1_cd.C
	.dbsym e aa _aa c
_s::
	.blkb 2
	.area idata
	.word 0
	.area data(ram, con, rel)
	.dbfile E:\重新整理的文件\控制类\超声波检测电路\程序\avr\cscj_timer1_cd.C
	.dbsym e s _s i
_cscj::
	.blkb 2
	.area idata
	.word 34
	.area data(ram, con, rel)
	.dbfile E:\重新整理的文件\控制类\超声波检测电路\程序\avr\cscj_timer1_cd.C
	.dbsym e cscj _cscj i
	.area text(rom, con, rel)
	.dbfile E:\重新整理的文件\控制类\超声波检测电路\程序\avr\cscj_timer1_cd.C
	.dbfunc e delayus _delayus fV
;              i -> R20,R21
;             us -> R22,R23
	.even
_delayus::
	xcall push_gset2
	movw R22,R16
	.dbline -1
	.dbline 26
	.dbline 28
	ldi R16,13
	ldi R17,0
	movw R18,R22
	xcall empy16s
	ldi R18,10
	ldi R19,0
	xcall div16u
	movw R22,R16
	.dbline 29
	clr R20
	clr R21
	xjmp L90
L87:
	.dbline 29
L88:
	.dbline 29
	subi R20,255  ; offset = 1
	sbci R21,255
L90:
	.dbline 29
	cp R20,R22
	cpc R21,R23
	brlo L87
	.dbline -2
	.dbline 30
L86:
	xcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r i 20 i
	.dbsym r us 22 i
	.dbend
	.dbfunc e delayms _delayms fV
;              x -> R20,R21
;              y -> R22,R23
;              z -> R16,R17
	.even
_delayms::
	xcall push_gset2
	.dbline -1
	.dbline 39
	.dbline 41
	movw R20,R16
	xjmp L95
L92:
	.dbline 42
	ldi R22,1185
	ldi R23,4
	xjmp L99
L96:
	.dbline 42
L97:
	.dbline 42
	subi R22,1
	sbci R23,0
L99:
	.dbline 42
	cpi R22,0
	cpc R22,R23
	brne L96
X3:
L93:
	.dbline 41
	subi R20,1
	sbci R21,0
L95:
	.dbline 41
	cpi R20,0
	cpc R20,R21
	brne L92
X4:
	.dbline -2
	.dbline 43
L91:
	xcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r x 20 i
	.dbsym r y 22 i
	.dbsym r z 16 i
	.dbend
	.dbfunc e int2 _int2 fV
	.even
_int2::
	st -y,R16
	st -y,R17
	st -y,R18
	st -y,R19
	st -y,R24
	st -y,R25
	in R16,0x3f
	st -y,R16
	.dbline -1
	.dbline 51
	.dbline 52
	cbi 0x17,4
	.dbline 53
	in R24,0x37
	andi R24,251
	out 0x37,R24
	.dbline 54
	ldi R24,1
	sts _flag,R24
	.dbline 55
	lds R18,_cscj
	lds R19,_cscj+1
	lds R16,_aa
	clr R17
	xcall empy16s
	ldi R18,20
	ldi R19,0
	xcall div16u
	movw R24,R16
	sbiw R24,8
	sts _s+1,R25
	sts _s,R24
	.dbline -2
	.dbline 56
L100:
	ld R16,y+
	out 0x3f,R16
	ld R25,y+
	ld R24,y+
	ld R19,y+
	ld R18,y+
	ld R17,y+
	ld R16,y+
	.dbline 0 ; func end
	reti
	.dbend
	.dbfunc e timer1 _timer1 fV
	.even
_timer1::
	st -y,R24
	st -y,R25
	in R24,0x3f
	st -y,R24
	.dbline -1
	.dbline 64
	.dbline 65
	ldi R24,255
	out 0x2d,R24
	.dbline 66
	ldi R24,172
	out 0x2c,R24
	.dbline 67
	lds R24,_aa
	subi R24,255    ; addi 1
	sts _aa,R24
	.dbline -2
	.dbline 68
L101:
	ld R24,y+
	out 0x3f,R24
	ld R25,y+
	ld R24,y+
	.dbline 0 ; func end
	reti
	.dbend
	.dbfunc e int2_init _int2_init fV
	.even
_int2_init::
	.dbline -1
	.dbline 78
	.dbline 79
	cbi 0x11,2
	.dbline 80
	sbi 0x12,2
	.dbline 81
	ldi R24,32
	sts 106,R24
	.dbline 82
	in R24,0x39
	ori R24,4
	out 0x39,R24
	.dbline 83
	bset 7
	.dbline -2
	.dbline 84
L102:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e timer0_init _timer0_init fV
	.even
_timer0_init::
	.dbline -1
	.dbline 93
	.dbline 94
	cbi 0x17,4
	.dbline 95
	in R24,0x30
	andi R24,247
	out 0x30,R24
	.dbline 96
	ldi R24,25
	out 0x33,R24
	.dbline 97
	ldi R24,102
	out 0x31,R24
	.dbline -2
	.dbline 99
L103:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e timer1_init _timer1_init fV
	.even
_timer1_init::
	.dbline -1
	.dbline 108
	.dbline 109
	ldi R24,1
	out 0x2e,R24
	.dbline 110
	ldi R24,255
	out 0x2d,R24
	.dbline 111
	ldi R24,172
	out 0x2c,R24
	.dbline 112
	in R24,0x37
	andi R24,251
	out 0x37,R24
	.dbline -2
	.dbline 113
L104:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e main _main fV
;              i -> <dead>
	.even
_main::
	.dbline -1
	.dbline 116
	.dbline 118
	ldi R24,255
	out 0x1a,R24
	.dbline 119
	ldi R24,68
	out 0x1b,R24
	.dbline 120
	xcall _int2_init
	.dbline 121
	xcall _timer1_init
	.dbline 122
	xcall _timer0_init
	.dbline 123
	xcall _lcd12864_init
	.dbline 124
	ldi R24,<L106
	ldi R25,>L106
	sts _line1+1,R25
	sts _line1,R24
	.dbline 125
	ldi R24,<L107
	ldi R25,>L107
	sts _line2+1,R25
	sts _line2,R24
	.dbline 126
	sbi 0x17,4
	.dbline 127
	in R24,0x37
	ori R24,4
	out 0x37,R24
	xjmp L109
L108:
	.dbline 129
	.dbline 130
	lds R24,_flag
	cpi R24,1
	breq X6
	xjmp L111
X6:
	.dbline 131
	.dbline 132
	clr R2
	sts _flag,R2
	.dbline 133
	ldi R24,<L106
	ldi R25,>L106
	sts _line1+1,R25
	sts _line1,R24
	.dbline 134
	ldi R24,<L107
	ldi R25,>L107
	sts _line2+1,R25
	sts _line2,R24
	.dbline 135
	xcall _display
	.dbline 136
	ldi R24,119
	out 0x1b,R24
	.dbline 138
	ldi R16,148
	xcall _write_com
	.dbline 139
	ldi R18,1000
	ldi R19,3
	lds R16,_s
	lds R17,_s+1
	xcall mod16u
	ldi R18,100
	ldi R19,0
	xcall div16u
	subi R16,208  ; offset = 48
	sbci R17,255
	xcall _write_data
	.dbline 140
	ldi R18,100
	ldi R19,0
	lds R16,_s
	lds R17,_s+1
	xcall mod16u
	ldi R18,10
	ldi R19,0
	xcall div16u
	subi R16,208  ; offset = 48
	sbci R17,255
	xcall _write_data
	.dbline 141
	ldi R18,10
	ldi R19,0
	lds R16,_s
	lds R17,_s+1
	xcall mod16u
	subi R16,208  ; offset = 48
	sbci R17,255
	xcall _write_data
	.dbline 142
	ldi R16,<L113
	ldi R17,>L113
	xcall _lcd_write
	.dbline 143
	ldi R16,500
	ldi R17,1
	xcall _delayms
	.dbline 144
	clr R2
	out 0x1b,R2
	.dbline 145
	sts _aa,R2
	.dbline 146
	ldi R24,255
	out 0x2d,R24
	.dbline 147
	ldi R24,172
	out 0x2c,R24
	.dbline 148
	sbi 0x17,4
	.dbline 149
	in R24,0x37
	ori R24,4
	out 0x37,R24
	.dbline 150
L111:
	.dbline 151
	lds R2,_flag
	tst R2
	brne L114
	.dbline 152
	.dbline 153
	xcall _clear_dis
	.dbline 154
L114:
	.dbline 155
L109:
	.dbline 128
	xjmp L108
X5:
	.dbline -2
	.dbline 156
L105:
	.dbline 0 ; func end
	ret
	.dbsym l i 1 c
	.dbend
	.area bss(ram, con, rel)
	.dbfile E:\重新整理的文件\控制类\超声波检测电路\程序\avr\cscj_timer1_cd.C
_line4::
	.blkb 2
	.dbfile E:\重新整理的文件\控制类\超声波检测电路\程序\avr/lcd12864.h
	.dbsym e line4 _line4 pc
_line3::
	.blkb 2
	.dbsym e line3 _line3 pc
_line2::
	.blkb 2
	.dbsym e line2 _line2 pc
_line1::
	.blkb 2
	.dbsym e line1 _line1 pc
	.area data(ram, con, rel)
	.dbfile E:\重新整理的文件\控制类\超声波检测电路\程序\avr/lcd12864.h
L113:
	.blkb 3
	.area idata
	.byte 'm,'m,0
	.area data(ram, con, rel)
	.dbfile E:\重新整理的文件\控制类\超声波检测电路\程序\avr/lcd12864.h
L107:
	.blkb 9
	.area idata
	.byte 32,32,190,224,192,235,163,186,0
	.area data(ram, con, rel)
	.dbfile E:\重新整理的文件\控制类\超声波检测电路\程序\avr/lcd12864.h
L106:
	.blkb 13
	.area idata
	.byte 188,236,178,226,181,189,213,207,176,173,206,239,0
	.area data(ram, con, rel)
	.dbfile E:\重新整理的文件\控制类\超声波检测电路\程序\avr/lcd12864.h
L34:
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile E:\重新整理的文件\控制类\超声波检测电路\程序\avr/lcd12864.h

⌨️ 快捷键说明

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