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

📄 12864.lis

📁 数字频率计数字频率计数字频率计数字频率计
💻 LIS
📖 第 1 页 / 共 3 页
字号:
 00B8 A3DF              xcall _Delayus
 00BA                   .dbline 77
 00BA           ;       LCDb_CLR_E;     
 00BA C698              cbi 0x18,6
 00BC                   .dbline -2
 00BC           L19:
 00BC 0E940000          xcall pop_gset2
 00C0                   .dbline 0 ; func end
 00C0 0895              ret
 00C2                   .dbsym r dByte 20 c
 00C2                   .dbsym r DatCmd 22 c
 00C2                   .dbend
 00C2                   .dbfunc e LCD12864_sendstr _LCD12864_sendstr fV
 00C2           ;       ptString -> R20,R21
                        .even
 00C2           _LCD12864_sendstr::
 00C2 0E940000          xcall push_gset1
 00C6 A801              movw R20,R16
 00C8                   .dbline -1
 00C8                   .dbline 86
 00C8           ; }
 00C8           ; /*******************************************
 00C8           ; 函数名称: LCD12864_sendstr
 00C8           ; 功    能: 向12864液晶写入一个字符串
 00C8           ; 参    数: ptString--字符串指针
 00C8           ; 返回值  : 无
 00C8           ; /********************************************/
 00C8           ; void LCD12864_sendstr(uchar *ptString)
 00C8           ; {
 00C8 05C0              xjmp L24
 00CA           L23:
 00CA                   .dbline 88
 00CA                   .dbline 89
 00CA FA01              movw R30,R20
 00CC 2191              ld R18,Z+
 00CE AF01              movw R20,R30
 00D0 01E0              ldi R16,1
 00D2 E4DF              xcall _LCD12864_sendbyte
 00D4                   .dbline 90
 00D4           L24:
 00D4                   .dbline 87
 00D4           ;       while((*ptString)!='\0')                 //字符串未结束一直写
 00D4 FA01              movw R30,R20
 00D6 2080              ldd R2,z+0
 00D8 2220              tst R2
 00DA B9F7              brne L23
 00DC                   .dbline -2
 00DC           L22:
 00DC 0E940000          xcall pop_gset1
 00E0                   .dbline 0 ; func end
 00E0 0895              ret
 00E2                   .dbsym r ptString 20 pc
 00E2                   .dbend
 00E2                   .dbfunc e LCD12864_clear _LCD12864_clear fV
                        .even
 00E2           _LCD12864_clear::
 00E2                   .dbline -1
 00E2                   .dbline 99
 00E2           ;       {
 00E2           ;               LCD12864_sendbyte(iDat, *ptString++);
 00E2           ;       }
 00E2           ; }
 00E2           ; /*******************************************
 00E2           ; 函数名称: LCD12864_clear
 00E2           ; 功    能: 12864液晶清屏
 00E2           ; 参    数: 无
 00E2           ; 返回值  : 无
 00E2           ; /********************************************/
 00E2           ; void LCD12864_clear(void)
 00E2           ; {
 00E2                   .dbline 100
 00E2           ;       LCD12864_sendbyte(iCmd,LCDb_CLS);
 00E2 21E0              ldi R18,1
 00E4 0027              clr R16
 00E6 DADF              xcall _LCD12864_sendbyte
 00E8                   .dbline 101
 00E8           ;       Delayms(2);// 清屏指令写入后,2ms 的延时是很必要的!!!
 00E8 02E0              ldi R16,2
 00EA 10E0              ldi R17,0
 00EC A1DF              xcall _Delayms
 00EE                   .dbline -2
 00EE           L26:
 00EE                   .dbline 0 ; func end
 00EE 0895              ret
 00F0                   .dbend
 00F0                   .dbfunc e LCD12864_readBF _LCD12864_readBF fc
 00F0           ;           busy -> R20
                        .even
 00F0           _LCD12864_readBF::
 00F0 0E940000          xcall push_gset1
 00F4                   .dbline -1
 00F4                   .dbline 110
 00F4           ; }
 00F4           ; /*******************************************
 00F4           ; 函数名称: LCD12864_readBF
 00F4           ; 功    能: 12864液晶清屏
 00F4           ; 参    数: 无
 00F4           ; 返回值  : busy--为1时忙,为0时可以接收指令
 00F4           ; /********************************************/
 00F4           ; uchar LCD12864_readBF(void)
 00F4           ; {       
 00F4                   .dbline 112
 00F4           ;       uchar busy;
 00F4           ;       busy=LCD12864_readbyte(iCmd);           //读回BF标志和地址
 00F4 0027              clr R16
 00F6 BADF              xcall _LCD12864_readbyte
 00F8 402F              mov R20,R16
 00FA                   .dbline 113
 00FA           ;       if(busy&0x80)                                           //如果忙,返回忙状态
 00FA 07FF              sbrs R16,7
 00FC 02C0              rjmp L28
 00FE                   .dbline 114
 00FE           ;               busy=1;
 00FE 41E0              ldi R20,1
 0100 01C0              xjmp L29
 0102           L28:
 0102                   .dbline 116
 0102           ;       else                                                            //不忙,可以写入
 0102           ;               busy=0;
 0102 4427              clr R20
 0104           L29:
 0104                   .dbline 117
 0104           ;       return busy;
 0104 042F              mov R16,R20
 0106                   .dbline -2
 0106           L27:
 0106 0E940000          xcall pop_gset1
 010A                   .dbline 0 ; func end
 010A 0895              ret
 010C                   .dbsym r busy 20 c
 010C                   .dbend
 010C                   .dbfunc e LCD12864_gotoXY _LCD12864_gotoXY fV
 010C           ;            Col -> R20
 010C           ;            Row -> R22
                        .even
 010C           _LCD12864_gotoXY::
 010C 0E940000          xcall push_gset2
 0110 422F              mov R20,R18
 0112 602F              mov R22,R16
 0114                   .dbline -1
 0114                   .dbline 127
 0114           ; }
 0114           ; /*******************************************
 0114           ; 函数名称: LCD12864_gotoXY
 0114           ; 功    能: 移动到指定位置
 0114           ; 参    数: Row--指定的行
 0114           ;                 Col--指定的列
 0114           ; 返回值  : 无
 0114           ; /********************************************/
 0114           ; void LCD12864_gotoXY(uchar Row, uchar Col)
 0114           ; {     
 0114                   .dbline 128
 0114           ;       switch (Row)              //选择行
 0114 7727              clr R23
 0116 6230              cpi R22,2
 0118 E0E0              ldi R30,0
 011A 7E07              cpc R23,R30
 011C 49F0              breq L34
 011E 6330              cpi R22,3
 0120 E0E0              ldi R30,0
 0122 7E07              cpc R23,R30
 0124 51F0              breq L35
 0126 6430              cpi R22,4
 0128 E0E0              ldi R30,0
 012A 7E07              cpc R23,R30
 012C 59F0              breq L36
 012E 0FC0              xjmp L31
 0130           X0:
 0130                   .dbline 129
 0130           ;       {
 0130           L34:
 0130                   .dbline 131
 0130           ;               case 2:
 0130           ;                       LCD12864_sendbyte(iCmd, LCDb_L2 + Col); break;  //写入第2行的指定列
 0130 242F              mov R18,R20
 0132 2057              subi R18,112    ; addi 144
 0134 0027              clr R16
 0136 B2DF              xcall _LCD12864_sendbyte
 0138                   .dbline 131
 0138 0EC0              xjmp L32
 013A           L35:
 013A                   .dbline 133
 013A           ;               case 3:
 013A           ;                       LCD12864_sendbyte(iCmd, LCDb_L3 + Col); break;  //写入第3行的指定列
 013A 242F              mov R18,R20
 013C 2857              subi R18,120    ; addi 136
 013E 0027              clr R16
 0140 ADDF              xcall _LCD12864_sendbyte
 0142                   .dbline 133
 0142 09C0              xjmp L32
 0144           L36:
 0144                   .dbline 135
 0144           ;               case 4:
 0144           ;                       LCD12864_sendbyte(iCmd, LCDb_L4 + Col); break;  //写入第4行的指定列     
 0144 242F              mov R18,R20
 0146 2856              subi R18,104    ; addi 152
 0148 0027              clr R16
 014A A8DF              xcall _LCD12864_sendbyte
 014C                   .dbline 135
 014C 04C0              xjmp L32
 014E           L31:
 014E                   .dbline 137
 014E 242F              mov R18,R20
 0150 2058              subi R18,128    ; addi 128
 0152 0027              clr R16
 0154 A3DF              xcall _LCD12864_sendbyte
 0156                   .dbline 137
 0156           L32:
 0156                   .dbline -2
 0156           L30:
 0156 0E940000          xcall pop_gset2
 015A                   .dbline 0 ; func end
 015A 0895              ret
 015C                   .dbsym r Col 20 c
 015C                   .dbsym r Row 22 c
 015C                   .dbend
 015C                   .dbfunc e LCD12864_initial _LCD12864_initial fV
                        .even
 015C           _LCD12864_initial::
 015C                   .dbline -1
 015C                   .dbline 147
 015C           ;               default:
 015C           ;                       LCD12864_sendbyte(iCmd, LCDb_L1 + Col); break;  //写入第1行的指定列     
 015C           ;       }
 015C           ; }
 015C           ; /*******************************************
 015C           ; 函数名称: LCD12864_initial
 015C           ; 功    能: 12864液晶初始化
 015C           ; 参    数: 无
 015C           ; 返回值  : 无
 015C           ; /********************************************/
 015C           ; void LCD12864_initial(void)
 015C           ; {
 015C                   .dbline 148
 015C           ;       Delayms(100);                           // 等待内部复位
 015C 04E6              ldi R16,100
 015E 10E0              ldi R17,0
 0160 67DF              xcall _Delayms
 0162                   .dbline 149
 0162           ;       LCD12864_portini();                     //端口初始化
 0162 7CDF              xcall _LCD12864_portini
 0164                   .dbline 151
 0164           ;       
 0164           ;       LCD12864_sendbyte(iCmd, LCDb_FUNCTION); //功能、模式设定
 0164 28E3              ldi R18,56
 0166 0027              clr R16
 0168 99DF              xcall _LCD12864_sendbyte
 016A           L38:
 016A                   .dbline 152
 016A           L39:
 016A                   .dbline 152
 016A           ;       while(LCD12864_readBF());
 016A C2DF              xcall _LCD12864_readBF
 016C 0023              tst R16
 016E E9F7              brne L38
 0170                   .dbline 153
 0170           ;       LCD12864_sendbyte(iCmd, LCDb_ON);               //打开显示
 0170 2CE0              ldi R18,12
 0172 0027              clr R16
 0174 93DF              xcall _LCD12864_sendbyte
 0176           L41:
 0176                   .dbline 154
 0176           L42:
 0176                   .dbline 154
 0176           ;       while(LCD12864_readBF());
 0176 BCDF              xcall _LCD12864_readBF
 0178 0023              tst R16

⌨️ 快捷键说明

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