📄 main.lis
字号:
.module main.c
.area text(rom, con, rel)
0000 .dbfile E:\ICCAVR\project\AVRMEG~2\icc\030-DS18B20-LED4\main.c
0000 .dbfunc e delay_ms _delay_ms fV
0000 ; b -> R20
0000 ; i -> R16,R17
.even
0000 _delay_ms::
0000 0E940000 xcall push_gset1
0004 .dbline -1
0004 .dbline 18
0004 ; /*
0004 ; 实验四:
0004 ; SPI接口实险,LED数据管显示。
0004 ; 1、程序通过SPI接口输出数据到HC595芯片驱动LED数据管简单显示。
0004 ; 2、内部1 M晶振,程序采用单任务方式,软件延时。
0004 ; 3、进行此实验请插上JP1的所有8个短路块,JP6(SPI_EN)短路块。
0004 ;
0004 ; AVR mega16学习板
0004 ; www.iccavr.com
0004 ; 2006-01-10
0004 ; */
0004 ;
0004 ; #include "iom16v.h"
0004 ; #include "ds1820.h"
0004 ; #include "led4.h"
0004 ;
0004 ; /*延时函数*/
0004 ; void delay_ms(unsigned int i) {
0004 05C0 xjmp L3
0006 L2:
0006 .dbline 21
0006 ;
0006 ; unsigned char b;
0006 ; while (i --) {
0006 .dbline 22
0006 41E0 ldi R20,1
0008 01C0 xjmp L8
000A L5:
000A .dbline 22
000A .dbline 23
000A .dbline 24
000A L6:
000A .dbline 22
000A 4395 inc R20
000C L8:
000C .dbline 22
000C 4423 tst R20
000E E9F7 brne L5
0010 .dbline 25
0010 L3:
0010 .dbline 21
0010 1801 movw R2,R16
0012 0150 subi R16,1
0014 1040 sbci R17,0
0016 2220 tst R2
0018 B1F7 brne L2
001A 3320 tst R3
001C A1F7 brne L2
001E X0:
001E .dbline -2
001E L1:
001E 0E940000 xcall pop_gset1
0022 .dbline 0 ; func end
0022 0895 ret
0024 .dbsym r b 20 c
0024 .dbsym r i 16 i
0024 .dbend
0024 .dbfunc e main _main fV
0024 ; i -> R20,R21
.even
0024 _main::
0024 .dbline -1
0024 .dbline 28
0024 ; for (b = 1; b; b++) {
0024 ; ;
0024 ; }
0024 ; }
0024 ; }
0024 ;
0024 ; void main(void) {
0024 .dbline 32
0024 ;
0024 ; unsigned int i;
0024 ;
0024 ; DDRA = 0x00; /*方向输入*/
0024 2224 clr R2
0026 2ABA out 0x1a,R2
0028 .dbline 33
0028 ; PORTA = 0xFF; /*打开上拉*/
0028 8FEF ldi R24,255
002A 8BBB out 0x1b,R24
002C .dbline 34
002C ; DDRB = 0xFF; /*方向输出*/
002C 87BB out 0x17,R24
002E .dbline 35
002E ; PORTB = 0xF0; /*电平设置*/
002E 80EF ldi R24,240
0030 88BB out 0x18,R24
0032 .dbline 36
0032 ; DDRC = 0x00;
0032 24BA out 0x14,R2
0034 .dbline 37
0034 ; PORTC = 0xFF;
0034 8FEF ldi R24,255
0036 85BB out 0x15,R24
0038 .dbline 38
0038 ; DDRD = 0x00;
0038 21BA out 0x11,R2
003A .dbline 39
003A ; PORTD = 0xFF;
003A 82BB out 0x12,R24
003C .dbline 41
003C ;
003C ; delay_ms(200);
003C 08EC ldi R16,200
003E 10E0 ldi R17,0
0040 DFDF xcall _delay_ms
0042 .dbline 42
0042 ; ds1820_reset();
0042 0E940000 xcall _ds1820_reset
0046 .dbline 43
0046 ; led4_init();
0046 0E940000 xcall _led4_init
004A 3FC0 xjmp L11
004C L10:
004C .dbline 44
004C .dbline 45
004C 0E940000 xcall _ds1820_start
0050 .dbline 46
0050 00ED ldi R16,2000
0052 17E0 ldi R17,7
0054 D5DF xcall _delay_ms
0056 .dbline 47
0056 0E940000 xcall _ds1820_read_temp
005A A801 movw R20,R16
005C .dbline 48
005C 0AE0 ldi R16,10
005E 10E0 ldi R17,0
0060 9A01 movw R18,R20
0062 0E940000 xcall empy16s
0066 A801 movw R20,R16
0068 5695 lsr R21
006A 4795 ror R20
006C 5695 lsr R21
006E 4795 ror R20
0070 5695 lsr R21
0072 4795 ror R20
0074 5695 lsr R21
0076 4795 ror R20
0078 .dbline 49
0078 28EE ldi R18,1000
007A 33E0 ldi R19,3
007C 8A01 movw R16,R20
007E 0E940000 xcall div16u
0082 00930300 sts _led_buf+3,R16
0086 .dbline 50
0086 28EE ldi R18,1000
0088 33E0 ldi R19,3
008A 8A01 movw R16,R20
008C 0E940000 xcall mod16u
0090 A801 movw R20,R16
0092 .dbline 51
0092 24E6 ldi R18,100
0094 30E0 ldi R19,0
0096 0E940000 xcall div16u
009A 00930200 sts _led_buf+2,R16
009E .dbline 52
009E 24E6 ldi R18,100
00A0 30E0 ldi R19,0
00A2 8A01 movw R16,R20
00A4 0E940000 xcall mod16u
00A8 A801 movw R20,R16
00AA .dbline 53
00AA 2AE0 ldi R18,10
00AC 30E0 ldi R19,0
00AE 0E940000 xcall div16u
00B2 00930100 sts _led_buf+1,R16
00B6 .dbline 54
00B6 2AE0 ldi R18,10
00B8 30E0 ldi R19,0
00BA 8A01 movw R16,R20
00BC 0E940000 xcall mod16u
00C0 00930000 sts _led_buf,R16
00C4 .dbline 55
00C4 81E0 ldi R24,1
00C6 80930400 sts _led_buf+4,R24
00CA .dbline 56
00CA L11:
00CA .dbline 44
00CA C0CF xjmp L10
00CC X1:
00CC .dbline -2
00CC L9:
00CC .dbline 0 ; func end
00CC 0895 ret
00CE .dbsym r i 20 i
00CE .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -