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

📄 oled.lis

📁 nRF24L01详细编程资料
💻 LIS
📖 第 1 页 / 共 2 页
字号:
                        .module OLED.c
                        .area text(rom, con, rel)
 0000                   .dbfile D:\OLED\OLED.c
 0000                   .dbfunc e InitOLED _InitOLED fV
                        .even
 0000           _InitOLED::
 0000                   .dbline -1
 0000                   .dbline 20
 0000           ; //ICC-AVR application builder : 2006-02-12 14:00:00
 0000           ; // Target : ATmega48
 0000           ; // Crystal: 8.000Mhz
 0000           ; // Author:  jackyan
 0000           ; 
 0000           ; 
 0000           ; #include "iom48v.h"
 0000           ; #include "macros.h"
 0000           ; #include "Defs.h"
 0000           ; #include "OLED.h"
 0000           ; #include "var.h"
 0000           ; #include "eeprom.h"
 0000           ; 
 0000           ; extern void I2C_Write(unsigned char M_ADD, unsigned char Data);
 0000           ; extern unsigned char I2C_Read(unsigned char M_ADD);
 0000           ; 
 0000           ; 
 0000           ; 
 0000           ; void InitOLED(void)
 0000           ; {
 0000                   .dbline 21
 0000           ;       WriteMode();
 0000 28D0              rcall _WriteMode
 0002                   .dbline -2
 0002           L1:
 0002                   .dbline 0 ; func end
 0002 0895              ret
 0004                   .dbend
 0004                   .dbfunc e WriteOLED _WriteOLED fV
 0004           ;          temp2 -> R20
 0004           ;           temp -> R22
 0004           ;            val -> R10
 0004           ;        address -> R12
                        .even
 0004           _WriteOLED::
 0004 00D0              rcall push_gset4
 0006 A22E              mov R10,R18
 0008 C02E              mov R12,R16
 000A                   .dbline -1
 000A                   .dbline 25
 000A           ; }
 000A           ; 
 000A           ; void WriteOLED(ubyte address,ubyte val)
 000A           ; {
 000A                   .dbline 26
 000A           ;       ubyte temp=0;
 000A 6627              clr R22
 000C                   .dbline 27
 000C           ;       ubyte temp2=20;
 000C 44E1              ldi R20,20
 000E 0FC0              rjmp L4
 0010           L3:
 0010                   .dbline 29
 0010           ;       while(temp2!=0)
 0010           ;               {
 0010                   .dbline 30
 0010           ;               I2C_Write(address,val);
 0010 2A2D              mov R18,R10
 0012 0C2D              mov R16,R12
 0014 00D0              rcall _I2C_Write
 0016                   .dbline 31
 0016           ;               temp=ReadOLED(address);
 0016 0C2D              mov R16,R12
 0018 15D0              rcall _ReadOLED
 001A 602F              mov R22,R16
 001C                   .dbline 32
 001C           ;               if(temp!=val)
 001C 0A15              cp R16,R10
 001E 49F0              breq L5
 0020                   .dbline 33
 0020           ;                       {
 0020                   .dbline 34
 0020           ;                       temp2--;
 0020 4A95              dec R20
 0022                   .dbline 35
 0022           ;                       WDR();
 0022 A895              wdr
 0024                   .dbline 36
 0024           ;                       for(temp=0;temp<100;temp++)
 0024 6627              clr R22
 0026 01C0              rjmp L11
 0028           L8:
 0028                   .dbline 37
 0028           L9:
 0028                   .dbline 36
 0028 6395              inc R22
 002A           L11:
 002A                   .dbline 36
 002A 6436              cpi R22,100
 002C E8F3              brlo L8
 002E                   .dbline 38
 002E           ;                               ;
 002E           ;                       }
 002E                   .dbline 40
 002E           ;               else
 002E           ;                       break;
 002E           L7:
 002E                   .dbline 41
 002E           L4:
 002E                   .dbline 28
 002E 4423              tst R20
 0030 79F7              brne L3
 0032           L5:
 0032                   .dbline 42
 0032           ;               }
 0032           ;       if (temp2==0)   // 连续10次都没有成功
 0032 4423              tst R20
 0034 29F4              brne L12
 0036                   .dbline 43
 0036                   .dbline 43
 0036 80910000          lds R24,_Flag
 003A 8260              ori R24,2
 003C 80930000          sts _Flag,R24
 0040                   .dbline 43
 0040           L12:
 0040                   .dbline 43
 0040           ;               set(Flag,bitOledError); 
 0040                   .dbline -2
 0040           L2:
 0040 00D0              rcall pop_gset4
 0042                   .dbline 0 ; func end
 0042 0895              ret
 0044                   .dbsym r temp2 20 c
 0044                   .dbsym r temp 22 c
 0044                   .dbsym r val 10 c
 0044                   .dbsym r address 12 c
 0044                   .dbend
 0044                   .dbfunc e ReadOLED _ReadOLED fc
 0044           ;           temp -> R20
 0044           ;        address -> R20
                        .even
 0044           _ReadOLED::
 0044 00D0              rcall push_gset1
 0046 402F              mov R20,R16
 0048                   .dbline -1
 0048                   .dbline 47
 0048           ; }
 0048           ; 
 0048           ; ubyte ReadOLED(ubyte address)
 0048           ; {
 0048                   .dbline 49
 0048           ;       ubyte temp;
 0048           ;       temp=I2C_Read(address);
 0048 042F              mov R16,R20
 004A 00D0              rcall _I2C_Read
 004C 402F              mov R20,R16
 004E                   .dbline 50
 004E           ;       return temp;
 004E                   .dbline -2
 004E           L14:
 004E 00D0              rcall pop_gset1
 0050                   .dbline 0 ; func end
 0050 0895              ret
 0052                   .dbsym r temp 20 c
 0052                   .dbsym r address 20 c
 0052                   .dbend
 0052                   .dbfunc e WriteMode _WriteMode fV
 0052           ;           temp -> <dead>
 0052           ;          temp2 -> R20
                        .even
 0052           _WriteMode::
 0052 00D0              rcall push_gset1
 0054                   .dbline -1
 0054                   .dbline 54
 0054           ; }
 0054           ; 
 0054           ; void WriteMode(void)
 0054           ; {
 0054                   .dbline 56
 0054           ;       ubyte temp,temp2;
 0054           ;       temp2=0;
 0054 4427              clr R20
 0056                   .dbline 57
 0056           ;       clr(Flag,bitOledError);
 0056                   .dbline 57
 0056 80910000          lds R24,_Flag
 005A 8D7F              andi R24,253
 005C 80930000          sts _Flag,R24
 0060                   .dbline 57
 0060                   .dbline 57
 0060                   .dbline 59
 0060           ;       
 0060           ;       if (OLEDMode==NTSC)
 0060 80910000          lds R24,_OLEDMode
 0064 8535              cpi R24,85
 0066 09F0              breq X0
 0068 51C0              rjmp L16
 006A           X0:
 006A                   .dbline 60
 006A           ;               {
 006A                   .dbline 61
 006A           ;               WriteOLED(0x01,0x78);
 006A 28E7              ldi R18,120
 006C 01E0              ldi R16,1
 006E CADF              rcall _WriteOLED
 0070                   .dbline 62
 0070           ;               WriteOLED(0x02,0x30);
 0070 20E3              ldi R18,48
 0072 02E0              ldi R16,2
 0074 C7DF              rcall _WriteOLED
 0076                   .dbline 63
 0076           ;               WriteOLED(0x03,0x78);
 0076 28E7              ldi R18,120
 0078 03E0              ldi R16,3
 007A C4DF              rcall _WriteOLED
 007C                   .dbline 64
 007C           ;               WriteOLED(0x04,0x30);
 007C 20E3              ldi R18,48
 007E 04E0              ldi R16,4
 0080 C1DF              rcall _WriteOLED
 0082                   .dbline 65
 0082           ;               WriteOLED(0x05,0x78);
 0082 28E7              ldi R18,120
 0084 05E0              ldi R16,5
 0086 BEDF              rcall _WriteOLED
 0088                   .dbline 67
 0088           ;               
 0088           ;               WriteOLED(0x06,0x30);
 0088 20E3              ldi R18,48
 008A 06E0              ldi R16,6
 008C BBDF              rcall _WriteOLED
 008E                   .dbline 68
 008E           ;               WriteOLED(0x07,Contrast);
 008E 20910000          lds R18,_Contrast
 0092 07E0              ldi R16,7
 0094 B7DF              rcall _WriteOLED
 0096                   .dbline 69
 0096           ;               WriteOLED(0x08,Bright);
 0096 20910000          lds R18,_Bright
 009A 08E0              ldi R16,8
 009C B3DF              rcall _WriteOLED
 009E                   .dbline 70
 009E           ;               WriteOLED(0x09,0x12);
 009E 22E1              ldi R18,18
 00A0 09E0              ldi R16,9
 00A2 B0DF              rcall _WriteOLED
 00A4                   .dbline 71
 00A4           ;               WriteOLED(0x0a,0x01);
 00A4 21E0              ldi R18,1
 00A6 0AE0              ldi R16,10
 00A8 ADDF              rcall _WriteOLED
 00AA                   .dbline 72
 00AA           ;               WriteOLED(0x0b,0x00);
 00AA 2227              clr R18
 00AC 0BE0              ldi R16,11

⌨️ 快捷键说明

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