📄 main.s
字号:
.module main.c
.area text(rom, con, rel)
.dbfile E:\ICCAVR\project\AVRMEG~2\icc\030-DS18B20-LED4\main.c
.dbfunc e delay_ms _delay_ms fV
; b -> R20
; i -> R16,R17
.even
_delay_ms::
xcall push_gset1
.dbline -1
.dbline 18
; /*
; 实验四:
; SPI接口实险,LED数据管显示。
; 1、程序通过SPI接口输出数据到HC595芯片驱动LED数据管简单显示。
; 2、内部1 M晶振,程序采用单任务方式,软件延时。
; 3、进行此实验请插上JP1的所有8个短路块,JP6(SPI_EN)短路块。
;
; AVR mega16学习板
; www.iccavr.com
; 2006-01-10
; */
;
; #include "iom16v.h"
; #include "ds1820.h"
; #include "led4.h"
;
; /*延时函数*/
; void delay_ms(unsigned int i) {
xjmp L3
L2:
.dbline 21
;
; unsigned char b;
; while (i --) {
.dbline 22
ldi R20,1
xjmp L8
L5:
.dbline 22
.dbline 23
.dbline 24
L6:
.dbline 22
inc R20
L8:
.dbline 22
tst R20
brne L5
.dbline 25
L3:
.dbline 21
movw R2,R16
subi R16,1
sbci R17,0
tst R2
brne L2
tst R3
brne L2
X0:
.dbline -2
L1:
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r b 20 c
.dbsym r i 16 i
.dbend
.dbfunc e main _main fV
; i -> R20,R21
.even
_main::
.dbline -1
.dbline 28
; for (b = 1; b; b++) {
; ;
; }
; }
; }
;
; void main(void) {
.dbline 32
;
; unsigned int i;
;
; DDRA = 0x00; /*方向输入*/
clr R2
out 0x1a,R2
.dbline 33
; PORTA = 0xFF; /*打开上拉*/
ldi R24,255
out 0x1b,R24
.dbline 34
; DDRB = 0xFF; /*方向输出*/
out 0x17,R24
.dbline 35
; PORTB = 0xF0; /*电平设置*/
ldi R24,240
out 0x18,R24
.dbline 36
; DDRC = 0x00;
out 0x14,R2
.dbline 37
; PORTC = 0xFF;
ldi R24,255
out 0x15,R24
.dbline 38
; DDRD = 0x00;
out 0x11,R2
.dbline 39
; PORTD = 0xFF;
out 0x12,R24
.dbline 41
;
; delay_ms(200);
ldi R16,200
ldi R17,0
xcall _delay_ms
.dbline 42
; ds1820_reset();
xcall _ds1820_reset
.dbline 43
; led4_init();
xcall _led4_init
xjmp L11
L10:
.dbline 44
.dbline 45
xcall _ds1820_start
.dbline 46
ldi R16,2000
ldi R17,7
xcall _delay_ms
.dbline 47
xcall _ds1820_read_temp
movw R20,R16
.dbline 48
ldi R16,10
ldi R17,0
movw R18,R20
xcall empy16s
movw R20,R16
lsr R21
ror R20
lsr R21
ror R20
lsr R21
ror R20
lsr R21
ror R20
.dbline 49
ldi R18,1000
ldi R19,3
movw R16,R20
xcall div16u
sts _led_buf+3,R16
.dbline 50
ldi R18,1000
ldi R19,3
movw R16,R20
xcall mod16u
movw R20,R16
.dbline 51
ldi R18,100
ldi R19,0
xcall div16u
sts _led_buf+2,R16
.dbline 52
ldi R18,100
ldi R19,0
movw R16,R20
xcall mod16u
movw R20,R16
.dbline 53
ldi R18,10
ldi R19,0
xcall div16u
sts _led_buf+1,R16
.dbline 54
ldi R18,10
ldi R19,0
movw R16,R20
xcall mod16u
sts _led_buf,R16
.dbline 55
ldi R24,1
sts _led_buf+4,R24
.dbline 56
L11:
.dbline 44
xjmp L10
X1:
.dbline -2
L9:
.dbline 0 ; func end
ret
.dbsym r i 20 i
.dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -