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

📄 1602_main.lis

📁 10K到5MHz的频率测量
💻 LIS
📖 第 1 页 / 共 5 页
字号:
                        .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 + -