?? 1602_main.lis
字號:
.module _1602_main.c
.area text(rom, con, rel)
0000 .dbfile D:\我的資源\我的文件\電子技術\AVR\AVR學習\JASON'~2\M16頻率計(10K-5MHz,誤差0.1%以下)(已驗證)\1602_main.c
0000 .dbfile D:\我的資源\我的文件\電子技術\AVR\AVR學習\JASON'~2\M16頻率計(10K-5MHz,誤差0.1%以下)(已驗證)\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 ; PORTB&=~(1<<RS); //RS=0
0014 C598 cbi 0x18,5
0016 .dbline 18
0016 ; s_ms(20);
0016 04E1 ldi R16,20
0018 10E0 ldi R17,0
001A F2DF xcall _s_ms
001C .dbline 19
001C ; PORTB|=(1<<RW); //RW=1
001C C69A sbi 0x18,6
001E .dbline 20
001E ; s_ms(20);
001E 04E1 ldi R16,20
0020 10E0 ldi R17,0
0022 EEDF xcall _s_ms
0024 1AC0 xjmp L8
0026 L7:
0026 .dbline 22
0026 ; while(temp)
0026 ; {
0026 .dbline 23
0026 ; PORTB|=(1<<EN); //EN=1
0026 C79A sbi 0x18,7
0028 .dbline 24
0028 ; s_ms(20);
0028 04E1 ldi R16,20
002A 10E0 ldi R17,0
002C E9DF xcall _s_ms
002E .dbline 25
002E ; DDRA=0x00; //A口變輸入
002E 2224 clr R2
0030 2ABA out 0x1a,R2
0032 .dbline 26
0032 ; PORTA=0xff; //上拉使能
0032 8FEF ldi R24,255
0034 8BBB out 0x1b,R24
0036 .dbline 27
0036 ; s_ms(20);
0036 04E1 ldi R16,20
0038 10E0 ldi R17,0
003A E2DF xcall _s_ms
003C .dbline 28
003C ; temp = PINA&0x80; //讀取A口
003C 49B3 in R20,0x19
003E 4078 andi R20,128
0040 .dbline 29
0040 ; s_ms(20);
0040 04E1 ldi R16,20
0042 10E0 ldi R17,0
0044 DDDF xcall _s_ms
0046 .dbline 30
0046 ; DDRA=0xff;
0046 8FEF ldi R24,255
0048 8ABB out 0x1a,R24
004A .dbline 31
004A ; PORTA=0xff; //A口變輸出
004A 8BBB out 0x1b,R24
004C .dbline 32
004C ; s_ms(20);
004C 04E1 ldi R16,20
004E 10E0 ldi R17,0
0050 D7DF xcall _s_ms
0052 .dbline 33
0052 ; PORTB&=~(1<<EN); //EN=0
0052 C798 cbi 0x18,7
0054 .dbline 34
0054 ; s_ms(20);
0054 04E1 ldi R16,20
0056 10E0 ldi R17,0
0058 D3DF xcall _s_ms
005A .dbline 35
005A ; }
005A L8:
005A .dbline 21
005A 4423 tst R20
005C 21F7 brne L7
005E X1:
005E .dbline -2
005E L6:
005E .dbline 0 ; func end
005E 4991 ld R20,y+
0060 0895 ret
0062 .dbsym r temp 20 c
0062 .dbend
0062 .dbfunc e writecom _writecom fV
0062 ; com -> R10
.even
0062 _writecom::
0062 AA92 st -y,R10
0064 A02E mov R10,R16
0066 .dbline -1
0066 .dbline 40
0066 ; }
0066 ;
0066 ; //寫指令
0066 ; void writecom(uchar com)
0066 ; {
0066 .dbline 41
0066 ; busy();
0066 D5DF xcall _busy
0068 .dbline 42
0068 ; s_ms(20);
0068 04E1 ldi R16,20
006A 10E0 ldi R17,0
006C C9DF xcall _s_ms
006E .dbline 43
006E ; PORTB&=~(1<<RS); //RS=0
006E C598 cbi 0x18,5
0070 .dbline 44
0070 ; s_ms(20);
0070 04E1 ldi R16,20
0072 10E0 ldi R17,0
0074 C5DF xcall _s_ms
0076 .dbline 45
0076 ; PORTB&=~(1<<RW); //RW=0
0076 C698 cbi 0x18,6
0078 .dbline 46
0078 ; s_ms(20);
0078 04E1 ldi R16,20
007A 10E0 ldi R17,0
007C C1DF xcall _s_ms
007E .dbline 47
007E ; PORTB|=(1<<EN); //EN=1
007E C79A sbi 0x18,7
0080 .dbline 48
0080 ; s_ms(20);
0080 04E1 ldi R16,20
0082 10E0 ldi R17,0
0084 BDDF xcall _s_ms
0086 .dbline 49
0086 ; PORTA = com; //輸出指令
0086 ABBA out 0x1b,R10
0088 .dbline 50
0088 ; s_ms(20);
0088 04E1 ldi R16,20
008A 10E0 ldi R17,0
008C B9DF xcall _s_ms
008E .dbline 51
008E ; PORTB&=~(1<<EN); //EN=0
008E C798 cbi 0x18,7
0090 .dbline 52
0090 ; s_ms(20);
0090 04E1 ldi R16,20
0092 10E0 ldi R17,0
0094 B5DF xcall _s_ms
0096 .dbline -2
0096 L10:
0096 .dbline 0 ; func end
0096 A990 ld R10,y+
0098 0895 ret
009A .dbsym r com 10 c
009A .dbend
009A .dbfunc e LcdInit _LcdInit fV
.even
009A _LcdInit::
009A .dbline -1
009A .dbline 57
009A ; }
009A ;
009A ; //1602初始化
009A ; void LcdInit(void)
009A ; {
009A .dbline 58
009A ; DDRA = 0xff;
009A 8FEF ldi R24,255
009C 8ABB out 0x1a,R24
009E .dbline 59
009E ; PORTA = 0x00;
009E 2224 clr R2
00A0 2BBA out 0x1b,R2
00A2 .dbline 60
00A2 ; writecom(0x38);
00A2 08E3 ldi R16,56
00A4 DEDF xcall _writecom
00A6 .dbline 61
00A6 ; s_ms(20);
00A6 04E1 ldi R16,20
00A8 10E0 ldi R17,0
00AA AADF xcall _s_ms
00AC .dbline 62
00AC ; writecom(0x01);
00AC 01E0 ldi R16,1
00AE D9DF xcall _writecom
00B0 .dbline 63
00B0 ; s_ms(1000);
00B0 08EE ldi R16,1000
00B2 13E0 ldi R17,3
00B4 A5DF xcall _s_ms
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 ; writecom(0x02);
00C2 02E0 ldi R16,2
00C4 CEDF xcall _writecom
00C6 .dbline 67
00C6 ; s_ms(20);
00C6 04E1 ldi R16,20
00C8 10E0 ldi R17,0
00CA 9ADF xcall _s_ms
00CC .dbline 68
00CC ; writecom(0x06);
00CC 06E0 ldi R16,6
00CE C9DF xcall _writecom
00D0 .dbline 69
00D0 ; s_ms(20);
00D0 04E1 ldi R16,20
00D2 10E0 ldi R17,0
00D4 95DF xcall _s_ms
00D6 .dbline 70
00D6 ; writecom(0x0c);
00D6 0CE0 ldi R16,12
00D8 C4DF xcall _writecom
00DA .dbline 71
00DA ; s_ms(20);
00DA 04E1 ldi R16,20
00DC 10E0 ldi R17,0
00DE 90DF xcall _s_ms
00E0 .dbline 72
00E0 ; writecom(0x38);
00E0 08E3 ldi R16,56
00E2 BFDF xcall _writecom
00E4 .dbline 73
00E4 ; s_ms(20);
00E4 04E1 ldi R16,20
00E6 10E0 ldi R17,0
00E8 8BDF xcall _s_ms
00EA .dbline -2
00EA L11:
00EA .dbline 0 ; func end
00EA 0895 ret
00EC .dbend
00EC .dbfunc e writedata _writedata fV
00EC ; data -> R10
.even
00EC _writedata::
00EC AA92 st -y,R10
00EE A02E mov R10,R16
00F0 .dbline -1
00F0 .dbline 78
00F0 ; }
00F0 ;
00F0 ; //寫數據
00F0 ; void writedata(uchar data)
00F0 ; {
00F0 .dbline 79
00F0 ; busy();
00F0 90DF xcall _busy
00F2 .dbline 80
00F2 ; s_ms(20);
00F2 04E1 ldi R16,20
00F4 10E0 ldi R17,0
00F6 84DF xcall _s_ms
00F8 .dbline 81
00F8 ; PORTB|=(1<<RS); //RS=1
00F8 C59A sbi 0x18,5
00FA .dbline 82
00FA ; s_ms(20);
00FA 04E1 ldi R16,20
00FC 10E0 ldi R17,0
00FE 80DF xcall _s_ms
0100 .dbline 83
0100 ; PORTB&=~(1<<RW); //RW=0
0100 C698 cbi 0x18,6
0102 .dbline 84
0102 ; s_ms(20);
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -