📄 adc-1602.lis
字号:
.module ADC-1602.c
.area text(rom, con, rel)
0000 .dbfile D:\16实验程序\模数转换\adc_1602\ADC-1602.c
0000 .dbfile D:\16实验程序\模数转换\adc_1602\1602.h
0000 .dbfunc e s_ms _s_ms fV
0000 ; ms -> R16,R17
.even
0000 _s_ms::
0000 .dbline -1
0000 .dbline 9
0000 ; #define uchar unsigned char
0000 ; #define uint unsigned int
0000 ;
0000 ; #define RS 5
0000 ; #define RW 6
0000 ; #define EN 7
0000 ;
0000 ; void s_ms(uint ms)
0000 ; {
0000 .dbline 10
0000 ; for(;ms>1;ms--);
0000 02C0 xjmp L5
0002 L2:
0002 .dbline 10
0002 L3:
0002 .dbline 10
0002 0150 subi R16,1
0004 1040 sbci R17,0
0006 L5:
0006 .dbline 10
0006 81E0 ldi R24,1
0008 90E0 ldi R25,0
000A 8017 cp R24,R16
000C 9107 cpc R25,R17
000E C8F3 brlo L2
0010 X0:
0010 .dbline -2
0010 L1:
0010 .dbline 0 ; func end
0010 0895 ret
0012 .dbsym r ms 16 i
0012 .dbend
0012 .dbfunc e busy _busy fV
0012 ; temp -> R20
.even
0012 _busy::
0012 4A93 st -y,R20
0014 .dbline -1
0014 .dbline 15
0014 ; }
0014 ;
0014 ; //查忙
0014 ; void busy(void)
0014 ; {
0014 .dbline 17
0014 ; uchar temp;
0014 ; s_ms(500);
0014 04EF ldi R16,500
0016 11E0 ldi R17,1
0018 F3DF xcall _s_ms
001A .dbline 18
001A ; PORTA&=~(1<<RS); //RS=0
001A DD98 cbi 0x1b,5
001C .dbline 19
001C ; s_ms(500);
001C 04EF ldi R16,500
001E 11E0 ldi R17,1
0020 EFDF xcall _s_ms
0022 .dbline 20
0022 ; PORTA|=(1<<RW); //RW=1
0022 DE9A sbi 0x1b,6
0024 .dbline 21
0024 ; s_ms(500);
0024 04EF ldi R16,500
0026 11E0 ldi R17,1
0028 EBDF xcall _s_ms
002A 1AC0 xjmp L8
002C L7:
002C .dbline 23
002C ; while(temp)
002C ; {
002C .dbline 24
002C ; PORTA|=(1<<EN); //EN=1
002C DF9A sbi 0x1b,7
002E .dbline 25
002E ; s_ms(500);
002E 04EF ldi R16,500
0030 11E0 ldi R17,1
0032 E6DF xcall _s_ms
0034 .dbline 26
0034 ; DDRD=0x00; //A口变输入
0034 2224 clr R2
0036 21BA out 0x11,R2
0038 .dbline 27
0038 ; PORTD=0xff; //上拉使能
0038 8FEF ldi R24,255
003A 82BB out 0x12,R24
003C .dbline 28
003C ; s_ms(500);
003C 04EF ldi R16,500
003E 11E0 ldi R17,1
0040 DFDF xcall _s_ms
0042 .dbline 29
0042 ; temp = PIND&0x80; //读取A口
0042 40B3 in R20,0x10
0044 4078 andi R20,128
0046 .dbline 30
0046 ; s_ms(500);
0046 04EF ldi R16,500
0048 11E0 ldi R17,1
004A DADF xcall _s_ms
004C .dbline 31
004C ; DDRD=0xff;
004C 8FEF ldi R24,255
004E 81BB out 0x11,R24
0050 .dbline 32
0050 ; PORTD=0xff; //A口变输出
0050 82BB out 0x12,R24
0052 .dbline 33
0052 ; s_ms(500);
0052 04EF ldi R16,500
0054 11E0 ldi R17,1
0056 D4DF xcall _s_ms
0058 .dbline 34
0058 ; PORTA&=~(1<<EN); //EN=0
0058 DF98 cbi 0x1b,7
005A .dbline 35
005A ; s_ms(500);
005A 04EF ldi R16,500
005C 11E0 ldi R17,1
005E D0DF xcall _s_ms
0060 .dbline 36
0060 ; }
0060 L8:
0060 .dbline 22
0060 4423 tst R20
0062 21F7 brne L7
0064 X1:
0064 .dbline -2
0064 L6:
0064 .dbline 0 ; func end
0064 4991 ld R20,y+
0066 0895 ret
0068 .dbsym r temp 20 c
0068 .dbend
0068 .dbfunc e writecom _writecom fV
0068 ; com -> R10
.even
0068 _writecom::
0068 AA92 st -y,R10
006A A02E mov R10,R16
006C .dbline -1
006C .dbline 41
006C ; }
006C ;
006C ; //写指令
006C ; void writecom(uchar com)
006C ; {
006C .dbline 42
006C ; busy();
006C D2DF xcall _busy
006E .dbline 43
006E ; s_ms(500);
006E 04EF ldi R16,500
0070 11E0 ldi R17,1
0072 C6DF xcall _s_ms
0074 .dbline 44
0074 ; PORTA&=~(1<<RS); //RS=0
0074 DD98 cbi 0x1b,5
0076 .dbline 45
0076 ; s_ms(500);
0076 04EF ldi R16,500
0078 11E0 ldi R17,1
007A C2DF xcall _s_ms
007C .dbline 46
007C ; PORTA&=~(1<<RW); //RW=0
007C DE98 cbi 0x1b,6
007E .dbline 47
007E ; s_ms(500);
007E 04EF ldi R16,500
0080 11E0 ldi R17,1
0082 BEDF xcall _s_ms
0084 .dbline 48
0084 ; PORTA|=(1<<EN); //EN=1
0084 DF9A sbi 0x1b,7
0086 .dbline 49
0086 ; s_ms(500);
0086 04EF ldi R16,500
0088 11E0 ldi R17,1
008A BADF xcall _s_ms
008C .dbline 50
008C ; PORTD = com; //输出指令
008C A2BA out 0x12,R10
008E .dbline 51
008E ; s_ms(500);
008E 04EF ldi R16,500
0090 11E0 ldi R17,1
0092 B6DF xcall _s_ms
0094 .dbline 52
0094 ; PORTA&=~(1<<EN); //EN=0
0094 DF98 cbi 0x1b,7
0096 .dbline 53
0096 ; s_ms(500);
0096 04EF ldi R16,500
0098 11E0 ldi R17,1
009A B2DF xcall _s_ms
009C .dbline -2
009C L10:
009C .dbline 0 ; func end
009C A990 ld R10,y+
009E 0895 ret
00A0 .dbsym r com 10 c
00A0 .dbend
00A0 .dbfunc e LcdInit _LcdInit fV
.even
00A0 _LcdInit::
00A0 .dbline -1
00A0 .dbline 58
00A0 ; }
00A0 ;
00A0 ; //1602初始化
00A0 ; void LcdInit(void)
00A0 ; {
00A0 .dbline 59
00A0 ; DDRD = 0xff;
00A0 8FEF ldi R24,255
00A2 81BB out 0x11,R24
00A4 .dbline 60
00A4 ; PORTD = 0x00;
00A4 2224 clr R2
00A6 22BA out 0x12,R2
00A8 .dbline 61
00A8 ; writecom(0x38);
00A8 08E3 ldi R16,56
00AA DEDF xcall _writecom
00AC .dbline 62
00AC ; s_ms(1000);
00AC 08EE ldi R16,1000
00AE 13E0 ldi R17,3
00B0 A7DF xcall _s_ms
00B2 .dbline 63
00B2 ; writecom(0x01);
00B2 01E0 ldi R16,1
00B4 D9DF xcall _writecom
00B6 .dbline 64
00B6 ; s_ms(1000);
00B6 08EE ldi R16,1000
00B8 13E0 ldi R17,3
00BA A2DF xcall _s_ms
00BC .dbline 65
00BC ; s_ms(1000);
00BC 08EE ldi R16,1000
00BE 13E0 ldi R17,3
00C0 9FDF xcall _s_ms
00C2 .dbline 66
00C2 ; s_ms(1000);
00C2 08EE ldi R16,1000
00C4 13E0 ldi R17,3
00C6 9CDF xcall _s_ms
00C8 .dbline 67
00C8 ; s_ms(1000);
00C8 08EE ldi R16,1000
00CA 13E0 ldi R17,3
00CC 99DF xcall _s_ms
00CE .dbline 68
00CE ; s_ms(1000);
00CE 08EE ldi R16,1000
00D0 13E0 ldi R17,3
00D2 96DF xcall _s_ms
00D4 .dbline 69
00D4 ; s_ms(1000);
00D4 08EE ldi R16,1000
00D6 13E0 ldi R17,3
00D8 93DF xcall _s_ms
00DA .dbline 70
00DA ; s_ms(1000);
00DA 08EE ldi R16,1000
00DC 13E0 ldi R17,3
00DE 90DF xcall _s_ms
00E0 .dbline 71
00E0 ; writecom(0x02);
00E0 02E0 ldi R16,2
00E2 C2DF xcall _writecom
00E4 .dbline 72
00E4 ; s_ms(1000);
00E4 08EE ldi R16,1000
00E6 13E0 ldi R17,3
00E8 8BDF xcall _s_ms
00EA .dbline 73
00EA ; writecom(0x06);
00EA 06E0 ldi R16,6
00EC BDDF xcall _writecom
00EE .dbline 74
00EE ; s_ms(1000);
00EE 08EE ldi R16,1000
00F0 13E0 ldi R17,3
00F2 86DF xcall _s_ms
00F4 .dbline 75
00F4 ; writecom(0x0c);
00F4 0CE0 ldi R16,12
00F6 B8DF xcall _writecom
00F8 .dbline 76
00F8 ; s_ms(1000);
00F8 08EE ldi R16,1000
00FA 13E0 ldi R17,3
00FC 81DF xcall _s_ms
00FE .dbline 77
00FE ; writecom(0x38);
00FE 08E3 ldi R16,56
0100 B3DF xcall _writecom
0102 .dbline 78
0102 ; s_ms(1000);
0102 08EE ldi R16,1000
0104 13E0 ldi R17,3
0106 7CDF xcall _s_ms
0108 .dbline -2
0108 L11:
0108 .dbline 0 ; func end
0108 0895 ret
010A .dbend
010A .dbfunc e writedata _writedata fV
010A ; data -> R10
.even
010A _writedata::
010A AA92 st -y,R10
010C A02E mov R10,R16
010E .dbline -1
010E .dbline 83
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -