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

📄 lcd.lis

📁 ATmega16内部ADC的应用:ATmega16内部集成了8路10位逐次逼近型模数转换器
💻 LIS
📖 第 1 页 / 共 2 页
字号:
                        .module lcd.c
                        .area text(rom, con, rel)
 0000                   .dbfile F:\radio\第十一篇\test-adc\lcd.c
 0000                   .dbfunc e ClearLcd _ClearLcd fV
                        .even
 0000           _ClearLcd::
 0000                   .dbline -1
 0000                   .dbline 40
 0000           ; #include <iom16v.h>
 0000           ; #include <macros.h>
 0000           ; #include "delay.h"
 0000           ; #define delay125ns NOP()
 0000           ; #define delay250ns NOP();NOP()
 0000           ; #define delay500ns NOP();NOP();NOP();NOP()
 0000           ; //;NOP()
 0000           ; 
 0000           ; #define delay1us NOP();NOP();NOP();NOP();NOP();NOP();NOP();NOP()
 0000           ; #define delay2us delay1us;delay1us
 0000           ; #define RS PD4
 0000           ; #define RW PD5
 0000           ; #define EN PD7
 0000           ; #define DataLcd PORTB
 0000           ; #define DataLcdIn PINB
 0000           ; #define DataOut DDRB = 0XFF
 0000           ; #define DataIn DDRB = 0
 0000           ; 
 0000           ; #define RS_0 PORTD &=~ (1<<RS)
 0000           ; #define RS_1 PORTD |=  (1<<RS)
 0000           ; #define RW_0 PORTD &=~ (1<<RW)
 0000           ; #define RW_1 PORTD |=  (1<<RW)
 0000           ; #define EN_0 PORTD &=~ (1<<EN)
 0000           ; #define EN_1 PORTD |=  (1<<EN)
 0000           ; /*时钟为8MHZ* /
 0000           ; void delay_1us(void)
 0000           ; {
 0000           ;    asm("nop");
 0000           ; }
 0000           ; void delay_us(unsigned int itimes)
 0000           ; {
 0000           ;    unsigned int itemp;
 0000           ;    for (itemp=0;itemp<itimes;itemp++)
 0000           ;       {
 0000           ;            delay_1us();
 0000           ;         }
 0000           ; }
 0000           ; /**/
 0000           ; void ClearLcd(void) 
 0000           ; {
 0000                   .dbline 41
 0000           ;    EN_0;
 0000 9798              cbi 0x12,7
 0002                   .dbline 42
 0002           ;    RS_0;
 0002 9498              cbi 0x12,4
 0004                   .dbline 43
 0004           ;    RW_0;
 0004 9598              cbi 0x12,5
 0006                   .dbline 44
 0006           ;    DataOut;
 0006 8FEF              ldi R24,255
 0008 87BB              out 0x17,R24
 000A                   .dbline 45
 000A           ;    DataLcd = 1;
 000A 81E0              ldi R24,1
 000C 88BB              out 0x18,R24
 000E                   .dbline 46
 000E           ;    delay250ns;
 000E 0000              nop
 0010                   .dbline 46
 0010 0000              nop
 0012                   .dbline 47
 0012           ;    EN_1;
 0012 979A              sbi 0x12,7
 0014                   .dbline 48
 0014           ;    delay500ns;
 0014 0000              nop
 0016                   .dbline 48
 0016 0000              nop
 0018                   .dbline 48
 0018 0000              nop
 001A                   .dbline 48
 001A 0000              nop
 001C                   .dbline 49
 001C           ;    EN_0;
 001C 9798              cbi 0x12,7
 001E                   .dbline 50
 001E           ;    delay125ns;
 001E 0000              nop
 0020                   .dbline 51
 0020           ;    RS_1;
 0020 949A              sbi 0x12,4
 0022                   .dbline 52
 0022           ;    RW_1;
 0022 959A              sbi 0x12,5
 0024                   .dbline -2
 0024           L1:
 0024                   .dbline 0 ; func end
 0024 0895              ret
 0026                   .dbend
 0026                   .dbfunc e home _home fV
                        .even
 0026           _home::
 0026                   .dbline -1
 0026                   .dbline 56
 0026           ; }   
 0026           ; /**/
 0026           ; void home(void)
 0026           ; {
 0026                   .dbline 57
 0026           ;    RS_0;
 0026 9498              cbi 0x12,4
 0028                   .dbline 58
 0028           ;    RW_0;
 0028 9598              cbi 0x12,5
 002A                   .dbline 59
 002A           ;    DataLcd = 2;
 002A 82E0              ldi R24,2
 002C 88BB              out 0x18,R24
 002E                   .dbline 60
 002E           ;    delay250ns;
 002E 0000              nop
 0030                   .dbline 60
 0030 0000              nop
 0032                   .dbline 61
 0032           ;    EN_1;
 0032 979A              sbi 0x12,7
 0034                   .dbline 62
 0034           ;    delay500ns;
 0034 0000              nop
 0036                   .dbline 62
 0036 0000              nop
 0038                   .dbline 62
 0038 0000              nop
 003A                   .dbline 62
 003A 0000              nop
 003C                   .dbline 63
 003C           ;    EN_0;
 003C 9798              cbi 0x12,7
 003E                   .dbline 64
 003E           ;    delay125ns;
 003E 0000              nop
 0040                   .dbline 65
 0040           ;    RS_1;
 0040 949A              sbi 0x12,4
 0042                   .dbline 66
 0042           ;    RW_1;
 0042 959A              sbi 0x12,5
 0044                   .dbline -2
 0044           L2:
 0044                   .dbline 0 ; func end
 0044 0895              ret
 0046                   .dbend
 0046                   .dbfunc e InputSet _InputSet fV
                        .even
 0046           _InputSet::
 0046                   .dbline -1
 0046                   .dbline 69
 0046           ; }
 0046           ; void InputSet(void)
 0046           ; {
 0046                   .dbline 70
 0046           ;    RS_0;
 0046 9498              cbi 0x12,4
 0048                   .dbline 71
 0048           ;    RW_0;
 0048 9598              cbi 0x12,5
 004A                   .dbline 72
 004A           ;    DataLcd = 6;   //
 004A 86E0              ldi R24,6
 004C 88BB              out 0x18,R24
 004E                   .dbline 73
 004E           ;    delay250ns;
 004E 0000              nop
 0050                   .dbline 73
 0050 0000              nop
 0052                   .dbline 74
 0052           ;    EN_1;
 0052 979A              sbi 0x12,7
 0054                   .dbline 75
 0054           ;    delay500ns;
 0054 0000              nop
 0056                   .dbline 75
 0056 0000              nop
 0058                   .dbline 75
 0058 0000              nop
 005A                   .dbline 75
 005A 0000              nop
 005C                   .dbline 76
 005C           ;    EN_0;
 005C 9798              cbi 0x12,7
 005E                   .dbline 77
 005E           ;    delay125ns;
 005E 0000              nop
 0060                   .dbline 78
 0060           ;    RS_1;
 0060 949A              sbi 0x12,4
 0062                   .dbline 79
 0062           ;    RW_1;
 0062 959A              sbi 0x12,5
 0064                   .dbline -2
 0064           L3:
 0064                   .dbline 0 ; func end
 0064 0895              ret
 0066                   .dbend
 0066                   .dbfunc e VisionSet _VisionSet fV
                        .even
 0066           _VisionSet::
 0066                   .dbline -1
 0066                   .dbline 82
 0066           ; }
 0066           ; void VisionSet(void)
 0066           ; {
 0066                   .dbline 83
 0066           ;    EN_0;
 0066 9798              cbi 0x12,7
 0068                   .dbline 84
 0068           ;    RS_0;
 0068 9498              cbi 0x12,4
 006A                   .dbline 85
 006A           ;    RW_0;
 006A 9598              cbi 0x12,5
 006C                   .dbline 86
 006C           ;    DataLcd = 0x0f;   //设置D=1,C=1,B=1
 006C 8FE0              ldi R24,15
 006E 88BB              out 0x18,R24
 0070                   .dbline 87
 0070           ;    delay250ns;
 0070 0000              nop
 0072                   .dbline 87
 0072 0000              nop
 0074                   .dbline 88
 0074           ;    EN_1;
 0074 979A              sbi 0x12,7
 0076                   .dbline 89
 0076           ;    delay500ns;
 0076 0000              nop
 0078                   .dbline 89
 0078 0000              nop
 007A                   .dbline 89
 007A 0000              nop
 007C                   .dbline 89
 007C 0000              nop
 007E                   .dbline 90
 007E           ;    EN_0;
 007E 9798              cbi 0x12,7
 0080                   .dbline 91
 0080           ;    delay125ns;
 0080 0000              nop
 0082                   .dbline 92
 0082           ;    RS_1;
 0082 949A              sbi 0x12,4
 0084                   .dbline 93
 0084           ;    RW_1;
 0084 959A              sbi 0x12,5
 0086                   .dbline -2
 0086           L4:
 0086                   .dbline 0 ; func end
 0086 0895              ret
 0088                   .dbend
 0088                   .dbfunc e FunctionSet _FunctionSet fV
                        .even
 0088           _FunctionSet::
 0088                   .dbline -1
 0088                   .dbline 96
 0088           ; }
 0088           ; void FunctionSet(void)
 0088           ; {
 0088                   .dbline 97
 0088           ;    DataOut;
 0088 8FEF              ldi R24,255
 008A 87BB              out 0x17,R24
 008C                   .dbline 98
 008C           ;    EN_0;
 008C 9798              cbi 0x12,7
 008E                   .dbline 99
 008E           ;    RS_0;
 008E 9498              cbi 0x12,4
 0090                   .dbline 100
 0090           ;    RW_0;
 0090 9598              cbi 0x12,5
 0092                   .dbline 101
 0092           ;    DataLcd = 0x38;   //设置DL=1,N=1,F=0
 0092 88E3              ldi R24,56
 0094 88BB              out 0x18,R24
 0096                   .dbline 102
 0096           ;    delay250ns;       //地址建立时间,最小140ns
 0096 0000              nop
 0098                   .dbline 102
 0098 0000              nop
 009A                   .dbline 103
 009A           ;    EN_1;
 009A 979A              sbi 0x12,7
 009C                   .dbline 104
 009C           ;    delay500ns;      //脉冲宽度,最小450ns
 009C 0000              nop
 009E                   .dbline 104
 009E 0000              nop
 00A0                   .dbline 104
 00A0 0000              nop
 00A2                   .dbline 104
 00A2 0000              nop
 00A4                   .dbline 105
 00A4           ;    EN_0;
 00A4 9798              cbi 0x12,7
 00A6                   .dbline 106
 00A6           ;    delay125ns;     //地址保持时间,最小10ns
 00A6 0000              nop
 00A8                   .dbline 107
 00A8           ;    RS_1;
 00A8 949A              sbi 0x12,4
 00AA                   .dbline 108
 00AA           ;    RW_1;
 00AA 959A              sbi 0x12,5
 00AC                   .dbline -2
 00AC           L5:
 00AC                   .dbline 0 ; func end
 00AC 0895              ret
 00AE                   .dbend
 00AE                   .dbfunc e CgramSet _CgramSet fV
                        .even
 00AE           _CgramSet::
 00AE                   .dbline -1
 00AE                   .dbline 111
 00AE           ; }
 00AE           ; void CgramSet(void)
 00AE           ; {
 00AE                   .dbline -2
 00AE           L6:
 00AE                   .dbline 0 ; func end
 00AE 0895              ret
 00B0                   .dbend
 00B0                   .dbfunc e DdramSet _DdramSet fV
 00B0           ;           addr -> R16
                        .even
 00B0           _DdramSet::
 00B0                   .dbline -1
 00B0                   .dbline 115
 00B0           ;    
 00B0           ; }
 00B0           ; void DdramSet(unsigned char addr)
 00B0           ; {
 00B0                   .dbline 116
 00B0           ;    EN_0;
 00B0 9798              cbi 0x12,7
 00B2                   .dbline 117
 00B2           ;    RS_0;
 00B2 9498              cbi 0x12,4
 00B4                   .dbline 118
 00B4           ;    RW_0;
 00B4 9598              cbi 0x12,5
 00B6                   .dbline 119
 00B6           ;    DataLcd = (0x80+addr);   //
 00B6 802F              mov R24,R16
 00B8 8058              subi R24,128    ; addi 128
 00BA 88BB              out 0x18,R24
 00BC                   .dbline 120
 00BC           ;    delay250ns;
 00BC 0000              nop
 00BE                   .dbline 120
 00BE 0000              nop
 00C0                   .dbline 121
 00C0           ;    EN_1;
 00C0 979A              sbi 0x12,7
 00C2                   .dbline 122
 00C2           ;    delay500ns;
 00C2 0000              nop
 00C4                   .dbline 122
 00C4 0000              nop
 00C6                   .dbline 122
 00C6 0000              nop
 00C8                   .dbline 122
 00C8 0000              nop
 00CA                   .dbline 123
 00CA           ;    EN_0;
 00CA 9798              cbi 0x12,7
 00CC                   .dbline 124
 00CC           ;    delay125ns; 
 00CC 0000              nop
 00CE                   .dbline 125
 00CE           ;    RS_1;
 00CE 949A              sbi 0x12,4
 00D0                   .dbline 126
 00D0           ;    RW_1;
 00D0 959A              sbi 0x12,5
 00D2                   .dbline -2
 00D2           L7:
 00D2                   .dbline 0 ; func end
 00D2 0895              ret
 00D4                   .dbsym r addr 16 c
 00D4                   .dbend
 00D4                   .dbfunc e BFRead _BFRead fc
 00D4           ;             bf -> R16
                        .even
 00D4           _BFRead::
 00D4                   .dbline -1
 00D4                   .dbline 129
 00D4           ; }
 00D4           ; unsigned char BFRead(void)
 00D4           ; {
 00D4                   .dbline 131
 00D4           ;    unsigned char bf;
 00D4           ;    RS_0;
 00D4 9498              cbi 0x12,4
 00D6                   .dbline 132
 00D6           ;    RW_1;  
 00D6 959A              sbi 0x12,5
 00D8                   .dbline 133
 00D8           ;    delay250ns;
 00D8 0000              nop
 00DA                   .dbline 133
 00DA 0000              nop

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -