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

📄 ocmj_lcd.lis

📁 mega128+时实时钟日期芯片ds1307的例子
💻 LIS
字号:
                        .module ocmj_lcd.c
                        .area text(rom, con, rel)
 0000                   .dbfile F:\cdy笔记本资料\E\工程\五星\设计文档\程序设计\ds1307\ocmj_lcd.c
 0000                   .dbfunc e ocmj_init _ocmj_init fV
                        .even
 0000           _ocmj_init::
 0000                   .dbline -1
 0000                   .dbline 6
 0000           ; #include <iom128v.h>
 0000           ; #include "ocmj_lcd.h" 
 0000           ; #include "delay.h"
 0000           ; /*     OCMJ4X8LCD初始化    */
 0000           ;  void ocmj_init(void)
 0000           ;     {
 0000                   .dbline 7
 0000           ;        MCUCR=0;
 0000 2224              clr R2
 0002 25BE              out 0x35,R2
 0004                   .dbline 8
 0004           ;        DDRA=0xff;
 0004 8FEF              ldi R24,255
 0006 8ABB              out 0x1a,R24
 0008                   .dbline 9
 0008           ;        PORTA=0xff;
 0008 8BBB              out 0x1b,R24
 000A                   .dbline 10
 000A           ;        DDRE=0b10000000;
 000A 80E8              ldi R24,128
 000C 82B9              out 0x2,R24
 000E                   .dbline 11
 000E           ;        PORTE=0xff;
 000E 8FEF              ldi R24,255
 0010 83B9              out 0x3,R24
 0012                   .dbline 12
 0012           ;        clr_reset;//LCD复位
 0012 AB98              cbi 0x15,3
 0014                   .dbline 13
 0014           ;        delay_nms(10);
 0014 0AE0              ldi R16,10
 0016 10E0              ldi R17,0
 0018 0E940000          xcall _delay_nms
 001C                   .dbline 14
 001C           ;        set_reset;
 001C AB9A              sbi 0x15,3
 001E                   .dbline 15
 001E           ;        clr_answer;
 001E 1F98              cbi 0x03,7
 0020                   .dbline 16
 0020           ;        delay_nms(10);
 0020 0AE0              ldi R16,10
 0022 10E0              ldi R17,0
 0024 0E940000          xcall _delay_nms
 0028                   .dbline -2
 0028           L1:
 0028                   .dbline 0 ; func end
 0028 0895              ret
 002A                   .dbend
 002A                   .dbfunc e ocmj_write _ocmj_write fV
 002A           ;           data -> R16
                        .even
 002A           _ocmj_write::
 002A                   .dbline -1
 002A                   .dbline 20
 002A           ;        }
 002A           ; /*            写数据到LCD        */
 002A           ;  void ocmj_write(unsigned char data)
 002A           ;     {
 002A           L3:
 002A                   .dbline 22
 002A           L4:
 002A                   .dbline 21
 002A           ;        while(ask!=0)
 002A 0E99              sbic 0x1,6
 002C FECF              rjmp L3
 002E                   .dbline 23
 002E           ;             ;
 002E           ;      data_port=data;
 002E 0BBB              out 0x1b,R16
 0030                   .dbline 24
 0030           ;        wait;
 0030 0000              nop
 0032 0000               nop
 0034                   .dbline 25
 0034           ;        set_answer;
 0034 1F9A              sbi 0x03,7
 0036                   .dbline 26
 0036           ;        wait;
 0036 0000              nop
 0038 0000               nop
 003A           L6:
 003A                   .dbline 28
 003A           L7:
 003A                   .dbline 27
 003A           ;        while(ask==0)
 003A 0E9B              sbis 0x1,6
 003C FECF              rjmp L6
 003E                   .dbline 29
 003E           ;             ;           
 003E           ;        clr_answer; 
 003E 1F98              cbi 0x03,7
 0040                   .dbline -2
 0040           L2:
 0040                   .dbline 0 ; func end
 0040 0895              ret
 0042                   .dbsym r data 16 c
 0042                   .dbend
 0042                   .dbfunc e asc_tran _asc_tran fV
 0042           ;          asc_p -> R20,R21
 0042           ;              y -> R22
 0042           ;              x -> R10
                        .even
 0042           _asc_tran::
 0042 0E940000          xcall push_gset3
 0046 622F              mov R22,R18
 0048 A02E              mov R10,R16
 004A 4E81              ldd R20,y+6
 004C 5F81              ldd R21,y+7
 004E                   .dbline -1
 004E                   .dbline 34
 004E           ;     }
 004E           ; /*          传送ASCII字母到LCD            */
 004E           ; /*          x:0x00~0x0f y:0~64            */  
 004E           ; void asc_tran(unsigned char x,unsigned char y,unsigned char *asc_p)
 004E           ;     {
 004E                   .dbline 35
 004E           ;        x+=4;
 004E 8A2D              mov R24,R10
 0050 8C5F              subi R24,252    ; addi 4
 0052 A82E              mov R10,R24
 0054 13C0              xjmp L11
 0056           L10:
 0056                   .dbline 37
 0056           ;        while((*asc_p)!=0)
 0056           ;           {
 0056                   .dbline 38
 0056           ;                ocmj_write(0xf1);
 0056 01EF              ldi R16,241
 0058 E8DF              xcall _ocmj_write
 005A                   .dbline 39
 005A           ;                ocmj_write(x);
 005A 0A2D              mov R16,R10
 005C E6DF              xcall _ocmj_write
 005E                   .dbline 40
 005E           ;                ocmj_write(y);
 005E 062F              mov R16,R22
 0060 E4DF              xcall _ocmj_write
 0062                   .dbline 41
 0062           ;                ocmj_write(*asc_p);
 0062 FA01              movw R30,R20
 0064 0081              ldd R16,z+0
 0066 E1DF              xcall _ocmj_write
 0068                   .dbline 42
 0068           ;                asc_p++;
 0068 4F5F              subi R20,255  ; offset = 1
 006A 5F4F              sbci R21,255
 006C                   .dbline 43
 006C           ;                if (x<0x13) 
 006C 8A2D              mov R24,R10
 006E 8331              cpi R24,19
 0070 10F4              brsh L13
 0072                   .dbline 44
 0072           ;                   x++;
 0072 A394              inc R10
 0074 03C0              xjmp L14
 0076           L13:
 0076                   .dbline 46
 0076           ;                else
 0076           ;                  {
 0076                   .dbline 47
 0076           ;                   x=0x04;
 0076 84E0              ldi R24,4
 0078 A82E              mov R10,R24
 007A                   .dbline 48
 007A           ;                       y+=8;               
 007A 685F              subi R22,248    ; addi 8
 007C                   .dbline 49
 007C           ;                  }    
 007C           L14:
 007C                   .dbline 50
 007C           L11:
 007C                   .dbline 36
 007C FA01              movw R30,R20
 007E 2080              ldd R2,z+0
 0080 2220              tst R2
 0082 49F7              brne L10
 0084                   .dbline -2
 0084           L9:
 0084 0E940000          xcall pop_gset3
 0088                   .dbline 0 ; func end
 0088 0895              ret
 008A                   .dbsym r asc_p 20 pc
 008A                   .dbsym r y 22 c
 008A                   .dbsym r x 10 c
 008A                   .dbend

⌨️ 快捷键说明

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