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

📄 zuhe.lis

📁 AVR单片机实现液晶显示的程序代码
💻 LIS
📖 第 1 页 / 共 3 页
字号:
                        .module zuhe.c
                        .area data(ram, con, rel)
 0000           _d::
 0000                   .blkb 2
                        .area idata
 0000 573D              .byte 'W,61
                        .area data(ram, con, rel)
 0002                   .blkb 2
                        .area idata
 0002 112E              .byte 17,46
                        .area data(ram, con, rel)
 0004                   .blkb 2
                        .area idata
 0004 1111              .byte 17,17
                        .area data(ram, con, rel)
 0006                   .blkb 2
                        .area idata
 0006 1177              .byte 17,'w
                        .area data(ram, con, rel)
 0008                   .blkb 1
                        .area idata
 0008 23                .byte 35
                        .area data(ram, con, rel)
 0009                   .dbfile zuhe.c
 0009                   .dbsym e d _d A[9:9]c
                        .area text(rom, con, rel)
 0000                   .dbfile zuhe.c
 0000                   .dbfunc e delay _delay fV
 0000           ;              j -> R20
 0000           ;              x -> R16,R17
                        .even
 0000           _delay::
 0000 00D0              rcall push_gset1
 0002                   .dbline -1
 0002                   .dbline 17
 0002           ; #include<iom8v.h>             //??¨1o?ATMEGA8|ì?¨a?¤???t
 0002           ; #include<macros.h>            //??¨1o?¨°?D?3?ê¨??o¨o|ì???§¨°?
 0002           ; #define uchar unsigned char
 0002           ; #define uint unsigned int
 0002           ; #define osccal_addr 0x1ff
 0002           ; #define fosc 8000000 //??ì??8MHZ
 0002           ; #define baud 9600 //2?§¨???¨o
 0002           ; #define LcdCmdPort PORTB
 0002           ; #define LcdDataPort PORTB
 0002           ; uint datax;
 0002           ; char d[9]={0x57,0x3d,0x11,0x2e,0x11,0x11,0x11,0x77,0x23};
 0002           ; uchar x,datah,K,datal,a[3],i,K,w1,w2,w3,w4;
 0002           ; float v,W;
 0002           ; 
 0002           ; //?á?D??¨?¨o?à|죤???ê???16??é??
 0002           ; void delay(uint x)   
 0002           ; {   uchar j;
 0002 05C0              rjmp L3
 0004           L2:
 0004                   .dbline 19
 0004           ;     while(x-->0)
 0004           ;       {
 0004                   .dbline 20
 0004           ;        for(j=0;j<5;j++)
 0004 4427              clr R20
 0006 01C0              rjmp L8
 0008           L5:
 0008                   .dbline 21
 0008                   .dbline 21
 0008                   .dbline 21
 0008           L6:
 0008                   .dbline 20
 0008 4395              inc R20
 000A           L8:
 000A                   .dbline 20
 000A 4530              cpi R20,5
 000C E8F3              brlo L5
 000E                   .dbline 22
 000E           L3:
 000E                   .dbline 18
 000E 1801              movw R2,R16
 0010 0150              subi R16,1
 0012 1040              sbci R17,0
 0014 2220              tst R2
 0016 B1F7              brne L2
 0018 3320              tst R3
 001A A1F7              brne L2
 001C           X0:
 001C                   .dbline -2
 001C                   .dbline 23
 001C           ;          {;}
 001C           ;     }
 001C           ; }
 001C           L1:
 001C 00D0              rcall pop_gset1
 001E                   .dbline 0 ; func end
 001E 0895              ret
 0020                   .dbsym r j 20 c
 0020                   .dbsym r x 16 i
 0020                   .dbend
 0020                   .dbfunc e EEPROM_read _EEPROM_read fc
 0020           ;      uiAddress -> R16,R17
                        .even
 0020           _EEPROM_read::
 0020                   .dbline -1
 0020                   .dbline 28
 0020           L10:
 0020                   .dbline 28
 0020           L11:
 0020                   .dbline 28
 0020           ; 
 0020           ; 
 0020           ; 
 0020           ; unsigned char EEPROM_read(unsigned int uiAddress)
 0020           ; {while(EECR&(1<<EEWE));
 0020 E199              sbic 0x1c,1
 0022 FECF              rjmp L10
 0024                   .dbline 29
 0024           ;  EEAR=uiAddress;
 0024 1FBB              out 0x1f,R17
 0026 0EBB              out 0x1e,R16
 0028                   .dbline 30
 0028           ;  EECR|=(1<<EERE);
 0028 E09A              sbi 0x1c,0
 002A                   .dbline 31
 002A           ;  return EEDR;
 002A 0DB3              in R16,0x1d
 002C                   .dbline -2
 002C           L9:
 002C                   .dbline 0 ; func end
 002C 0895              ret
 002E                   .dbsym r uiAddress 16 i
 002E                   .dbend
 002E                   .dbfunc e init_adc _init_adc fV
                        .even
 002E           _init_adc::
 002E                   .dbline -1
 002E                   .dbline 35
 002E           ; }
 002E           ; 
 002E           ; void init_adc(void)
 002E           ; {ADMUX=(3<<REFS0);      //ADC2???|ì??1?a?¨22?2.56V,??ê?a¨a?§|쨤????ADC0
 002E                   .dbline 35
 002E 80EC              ldi R24,192
 0030 87B9              out 0x7,R24
 0032                   .dbline 36
 0032           ;  ADCSRA=(1<<ADEN)|(1<<ADSC); //ADC¨o1?¨1?ê?2?é????¥¨°?????áa???ê?2?à??¤??|ì,
 0032 86B9              out 0x6,R24
 0034                   .dbline -2
 0034                   .dbline 38
 0034           ;                                          
 0034           ; }     
 0034           L13:
 0034                   .dbline 0 ; func end
 0034 0895              ret
 0036                   .dbend
 0036                   .dbfunc e readadc _readadc fV
                        .even
 0036           _readadc::
 0036                   .dbline -1
 0036                   .dbline 41
 0036           ; 
 0036           ; void readadc(void)
 0036           ; {datal=ADCL;
 0036                   .dbline 41
 0036 24B0              in R2,0x4
 0038 20921000          sts _datal,R2
 003C                   .dbline 42
 003C           ;  datah=ADCH;
 003C 25B0              in R2,0x5
 003E 20921200          sts _datah,R2
 0042                   .dbline -2
 0042                   .dbline 45
 0042           ;  //ADCSRA=(1<<ADSC);    //|죤????áa??¥
 0042           ;  //datax=(datah<<8)+datal;
 0042           ; }
 0042           L14:
 0042                   .dbline 0 ; func end
 0042 0895              ret
 0044                   .dbend
 0044                   .dbfunc e LcdBusy _LcdBusy fV
                        .even
 0044           _LcdBusy::
 0044                   .dbline -1
 0044                   .dbline 50
 0044           ; 
 0044           ; void LcdBusy(void); /* LCD???ì?????? */
 0044           ; 
 0044           ; void LcdBusy()
 0044           ; { 
 0044                   .dbline 52
 0044           ; 
 0044           ; PORTC &= ~(1<<PORTC4);
 0044 AC98              cbi 0x15,4
 0046                   .dbline 53
 0046           ; PORTC |=  (1<<PORTC5);
 0046 AD9A              sbi 0x15,5
 0048                   .dbline 54
 0048           ; LcdCmdPort = 0xff;
 0048 8FEF              ldi R24,255
 004A 88BB              out 0x18,R24
 004C                   .dbline 55
 004C           ; DDRB=0x00;
 004C 2224              clr R2
 004E 27BA              out 0x17,R2
 0050                   .dbline 56
 0050           ; PORTC |=  (1<<PORTC3);
 0050 AB9A              sbi 0x15,3
 0052                   .dbline 57
 0052           ; PORTC &= ~(1<<PORTC3);
 0052 AB98              cbi 0x15,3
 0054 02C0              rjmp L17
 0056           L16:
 0056                   .dbline 59
 0056                   .dbline 61
 0056 AB98              cbi 0x15,3
 0058                   .dbline 62
 0058 AB9A              sbi 0x15,3
 005A                   .dbline 63
 005A           L17:
 005A                   .dbline 58
 005A           ; while ((PINB&0x80)!=0)
 005A B799              sbic 0x16,7
 005C FCCF              rjmp L16
 005E                   .dbline 64
 005E           ; { 
 005E           ; 
 005E           ; PORTC &= ~(1<<PORTC3);
 005E           ; PORTC |=  (1<<PORTC3);
 005E           ; }
 005E           ; PORTC |=  (1<<PORTC3);
 005E AB9A              sbi 0x15,3
 0060                   .dbline 65
 0060           ; DDRB=0xff;
 0060 8FEF              ldi R24,255
 0062 87BB              out 0x17,R24
 0064                   .dbline -2
 0064                   .dbline 67
 0064           ; //LcdDelay(500);
 0064           ; }
 0064           L15:
 0064                   .dbline 0 ; func end
 0064 0895              ret
 0066                   .dbend
 0066                   .dbfunc e LcdXY _LcdXY fV
 0066           ;              y -> R22
 0066           ;              x -> R20
                        .even
 0066           _LcdXY::
 0066 00D0              rcall push_gset2
 0068 622F              mov R22,R18
 006A 402F              mov R20,R16
 006C                   .dbline -1
 006C                   .dbline 74
 006C           ; 
 006C           ; 
 006C           ; 
 006C           ; 
 006C           ; void LcdXY(char,char); /* LCD?????¨?????? */
 006C           ; void LcdXY(char x,char y)
 006C           ; { 
 006C                   .dbline 76
 006C           ; 
 006C           ; if ((y&0x01)!=0)LcdCmd(0x80|(x-1));
 006C 60FF              sbrs R22,0
 006E 07C0              rjmp L20
 0070                   .dbline 76
 0070 042F              mov R16,R20
 0072 1127              clr R17
 0074 0150              subi R16,1
 0076 1040              sbci R17,0
 0078 0068              ori R16,128
 007A 09D0              rcall _LcdCmd
 007C 06C0              rjmp L21
 007E           L20:
 007E                   .dbline 77
 007E 042F              mov R16,R20
 0080 1127              clr R17
 0082 0150              subi R16,1
 0084 1040              sbci R17,0
 0086 006C              ori R16,192
 0088 02D0              rcall _LcdCmd
 008A           L21:
 008A                   .dbline -2
 008A                   .dbline 80
 008A           ; else LcdCmd(0xC0|(x-1));
 008A           ; 
 008A           ; 
 008A           ; }
 008A           L19:
 008A 00D0              rcall pop_gset2
 008C                   .dbline 0 ; func end
 008C 0895              ret
 008E                   .dbsym r y 22 c
 008E                   .dbsym r x 20 c
 008E                   .dbend
 008E                   .dbfunc e LcdCmd _LcdCmd fV
 008E           ;              c -> R20
                        .even
 008E           _LcdCmd::
 008E 00D0              rcall push_gset1
 0090 402F              mov R20,R16
 0092                   .dbline -1
 0092                   .dbline 84
 0092           ; 
 0092           ; void LcdCmd(char); /* LCD?????ü?????? */
 0092           ; void LcdCmd(char c)
 0092           ; { 
 0092                   .dbline 86
 0092           ; 
 0092           ; LcdBusy();
 0092 D8DF              rcall _LcdBusy
 0094                   .dbline 87
 0094           ; PORTC |=  (1<<PORTC3);
 0094 AB9A              sbi 0x15,3
 0096                   .dbline 88
 0096           ; PORTC &= ~(1<<PORTC4);
 0096 AC98              cbi 0x15,4
 0098                   .dbline 89
 0098           ; PORTC &= ~(1<<PORTC5);
 0098 AD98              cbi 0x15,5
 009A                   .dbline 92
 009A           ; //PORTC &= ~(1<<PORTC3);
 009A           ; 
 009A           ; LcdCmdPort = c;
 009A 48BB              out 0x18,R20
 009C                   .dbline 93
 009C           ; delay(500);
 009C 04EF              ldi R16,500
 009E 11E0              ldi R17,1
 00A0 AFDF              rcall _delay
 00A2                   .dbline 94
 00A2           ; PORTC &= ~(1<<PORTC3);
 00A2 AB98              cbi 0x15,3
 00A4                   .dbline -2
 00A4                   .dbline 96
 00A4           ; 
 00A4           ; }
 00A4           L22:
 00A4 00D0              rcall pop_gset1
 00A6                   .dbline 0 ; func end
 00A6 0895              ret
 00A8                   .dbsym r c 20 c
 00A8                   .dbend
 00A8                   .dbfunc e LcdData _LcdData fV
 00A8           ;              c -> R20
                        .even
 00A8           _LcdData::
 00A8 00D0              rcall push_gset1
 00AA 402F              mov R20,R16
 00AC                   .dbline -1
 00AC                   .dbline 101
 00AC           ; 
 00AC           ; 
 00AC           ; void LcdData(char); /* LCD???????????? */
 00AC           ; void LcdData(char c)
 00AC           ; { 
 00AC                   .dbline 103
 00AC           ; 
 00AC           ; LcdBusy();
 00AC CBDF              rcall _LcdBusy
 00AE                   .dbline 104
 00AE           ; PORTC |=  (1<<PORTC3);
 00AE AB9A              sbi 0x15,3
 00B0                   .dbline 105
 00B0           ; PORTC |=  (1<<PORTC4);
 00B0 AC9A              sbi 0x15,4
 00B2                   .dbline 106
 00B2           ; PORTC &= ~(1<<PORTC5);
 00B2 AD98              cbi 0x15,5
 00B4                   .dbline 109
 00B4           ; //PORTC &= ~(1<<PORTC3);
 00B4           ; 
 00B4           ; LcdDataPort = c;
 00B4 48BB              out 0x18,R20

⌨️ 快捷键说明

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