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

📄 12864.lis

📁 数字频率计数字频率计数字频率计数字频率计
💻 LIS
📖 第 1 页 / 共 3 页
字号:
                        .module _12864.c
                        .area text(rom, con, rel)
 0000                   .dbfile E:\张秋伟\我的实验\数字频率计/LCD_PORT.h
 0000                   .dbfunc e Delayus _Delayus fV
 0000           ;              i -> R20,R21
 0000           ;             US -> R22,R23
                        .even
 0000           _Delayus::
 0000 0E940000          xcall push_gset2
 0004 B801              movw R22,R16
 0006                   .dbline -1
 0006                   .dbline 15
 0006           ; /*******************************************
 0006           ;   文件:12864.C
 0006           ;   环境:编译为ICC AVR6.31
 0006           ; ********************************************
 0006           ; 1 VSS -->接地
 0006           ; 2 VDD -->电源VCC
 0006           ; 3 V0  -->高电平
 0006           ; 4 RS(CS) --> PB4
 0006           ; 5 RW(STD)-->PB5
 0006           ; 6 E      --> PB6
 0006           ; 7 ~~~14 -->PA0~~PA7 (输出数据总线)
 0006           ; 15 PSB-->VCC
 0006           ; 16 NC
 0006           ; 17 RST-->VCC
 0006           ; 18 NC
 0006                   .dbline 17
 0006           ; 19 LEDA -->VCC
 0006           ; 20 LEDB -->GND
 0006 05E0              ldi R16,5
 0008 10E0              ldi R17,0
 000A 9B01              movw R18,R22
 000C 0E940000          xcall empy16s
 0010 B801              movw R22,R16
 0012 7695              lsr R23
 0014 6795              ror R22
 0016 7695              lsr R23
 0018 6795              ror R22
 001A                   .dbline 18
 001A 4427              clr R20
 001C 5527              clr R21
 001E 02C0              xjmp L5
 0020           L2:
 0020                   .dbline 18
 0020           L3:
 0020                   .dbline 18
 0020 4F5F              subi R20,255  ; offset = 1
 0022 5F4F              sbci R21,255
 0024           L5:
 0024                   .dbline 18
 0024           ; /******************************************/
 0024 4617              cp R20,R22
 0026 5707              cpc R21,R23
 0028 D8F3              brlo L2
 002A                   .dbline -2
 002A           L1:
 002A 0E940000          xcall pop_gset2
 002E                   .dbline 0 ; func end
 002E 0895              ret
 0030                   .dbsym r i 20 i
 0030                   .dbsym r US 22 i
 0030                   .dbend
 0030                   .dbfunc e Delayms _Delayms fV
 0030           ;              i -> R20,R21
 0030           ;              j -> R22,R23
 0030           ;             MS -> R16,R17
                        .even
 0030           _Delayms::
 0030 0E940000          xcall push_gset2
 0034                   .dbline -1
 0034                   .dbline 27
 0034           ; #include <iom16v.h>                   //包含型号头文件
 0034           ; #include <macros.h>                   //包含"位"操作头文件
 0034           ; #include "LCD_PORT.h"         //包含自定义常量头文件
 0034           ; 
 0034           ; 
 0034           ; /*******************************************
 0034           ; 函数名称: LCD12864_portini
 0034           ; 功    能: 初始化12864液晶用到的IO口
 0034           ; 参    数: 无
 0034                   .dbline 29
 0034           ; 返回值  : 无
 0034           ; /********************************************/
 0034 4427              clr R20
 0036 5527              clr R21
 0038 0BC0              xjmp L10
 003A           L7:
 003A                   .dbline 30
 003A 6627              clr R22
 003C 7727              clr R23
 003E 02C0              xjmp L14
 0040           L11:
 0040                   .dbline 30
 0040           L12:
 0040                   .dbline 30
 0040 6F5F              subi R22,255  ; offset = 1
 0042 7F4F              sbci R23,255
 0044           L14:
 0044                   .dbline 30
 0044 6537              cpi R22,117
 0046 E4E0              ldi R30,4
 0048 7E07              cpc R23,R30
 004A D0F3              brlo L11
 004C           L8:
 004C                   .dbline 29
 004C 4F5F              subi R20,255  ; offset = 1
 004E 5F4F              sbci R21,255
 0050           L10:
 0050                   .dbline 29
 0050 4017              cp R20,R16
 0052 5107              cpc R21,R17
 0054 90F3              brlo L7
 0056                   .dbline -2
 0056           L6:
 0056 0E940000          xcall pop_gset2
 005A                   .dbline 0 ; func end
 005A 0895              ret
 005C                   .dbsym r i 20 i
 005C                   .dbsym r j 22 i
 005C                   .dbsym r MS 16 i
 005C                   .dbend
 005C                   .dbfile E:\张秋伟\我的实验\数字频率计\12864.c
 005C                   .dbfunc e LCD12864_portini _LCD12864_portini fV
                        .even
 005C           _LCD12864_portini::
 005C                   .dbline -1
 005C                   .dbline 31
 005C           ; void LCD12864_portini(void)
 005C           ; {
 005C                   .dbline 32
 005C           ;       LCDb_CTRL_DDR |= BIT(LCDb_RS)|BIT(LCDb_RW)|BIT(LCDb_E)|BIT(LCDb_RST);//配置控制管脚为输出
 005C 87B3              in R24,0x17
 005E 806F              ori R24,240
 0060 87BB              out 0x17,R24
 0062                   .dbline 33
 0062           ;       LCDb_DATA_DDR |= 0xFF;  //配置数据管脚为输出
 0062 8AB3              in R24,0x1a
 0064 8F6F              ori R24,255
 0066 8ABB              out 0x1a,R24
 0068                   .dbline 34
 0068           ;       LCDb_SET_RST;           //不使能复位端
 0068 C79A              sbi 0x18,7
 006A                   .dbline -2
 006A           L15:
 006A                   .dbline 0 ; func end
 006A 0895              ret
 006C                   .dbend
 006C                   .dbfunc e LCD12864_readbyte _LCD12864_readbyte fc
 006C           ;          dByte -> R20
 006C           ;         DatCmd -> R20
                        .even
 006C           _LCD12864_readbyte::
 006C 0E940000          xcall push_gset1
 0070 402F              mov R20,R16
 0072                   .dbline -1
 0072                   .dbline 43
 0072           ; }
 0072           ; /*******************************************
 0072           ; 函数名称: LCD12864_readbyte
 0072           ; 功    能: 从12864液晶读出一个字节数据或者指令
 0072           ; 参    数: DatCmd--为iDat时是数据,为iCmd时是指令
 0072           ; 返回值  : dByte--读回的数据或者指令
 0072           ; /********************************************/
 0072           ; uchar LCD12864_readbyte(uchar DatCmd)
 0072           ; {
 0072                   .dbline 45
 0072           ;       uchar dByte;
 0072           ;       if (DatCmd == iCmd)              //指令操作
 0072 4423              tst R20
 0074 11F4              brne L17
 0076                   .dbline 46
 0076           ;               LCDb_CLR_RS;
 0076 C498              cbi 0x18,4
 0078 01C0              xjmp L18
 007A           L17:
 007A                   .dbline 48
 007A           ;       else
 007A           ;               LCDb_SET_RS;
 007A C49A              sbi 0x18,4
 007C           L18:
 007C                   .dbline 50
 007C           ;               
 007C           ;       LCDb_SET_RW;                     //读操作
 007C C59A              sbi 0x18,5
 007E                   .dbline 51
 007E           ;       LCDb_SET_E;
 007E C69A              sbi 0x18,6
 0080                   .dbline 52
 0080           ;       LCDb_DATA_DDR=0x00;      //数据总线定义为输入
 0080 2224              clr R2
 0082 2ABA              out 0x1a,R2
 0084                   .dbline 53
 0084           ;       dByte=LCDb_DI;                   //读数据或者指令
 0084 49B3              in R20,0x19
 0086                   .dbline 54
 0086           ;       Delayms(1);                              //时序调整
 0086 01E0              ldi R16,1
 0088 10E0              ldi R17,0
 008A D2DF              xcall _Delayms
 008C                   .dbline 55
 008C           ;       LCDb_CLR_E;     
 008C C698              cbi 0x18,6
 008E                   .dbline 56
 008E           ;       LCDb_DATA_DDR|=0xff;     //数据总线还原为输出
 008E 8AB3              in R24,0x1a
 0090 8F6F              ori R24,255
 0092 8ABB              out 0x1a,R24
 0094                   .dbline 57
 0094           ;       return dByte;
 0094 042F              mov R16,R20
 0096                   .dbline -2
 0096           L16:
 0096 0E940000          xcall pop_gset1
 009A                   .dbline 0 ; func end
 009A 0895              ret
 009C                   .dbsym r dByte 20 c
 009C                   .dbsym r DatCmd 20 c
 009C                   .dbend
 009C                   .dbfunc e LCD12864_sendbyte _LCD12864_sendbyte fV
 009C           ;          dByte -> R20
 009C           ;         DatCmd -> R22
                        .even
 009C           _LCD12864_sendbyte::
 009C 0E940000          xcall push_gset2
 00A0 422F              mov R20,R18
 00A2 602F              mov R22,R16
 00A4                   .dbline -1
 00A4                   .dbline 67
 00A4           ; }
 00A4           ; /*******************************************
 00A4           ; 函数名称: LCD12864_sendbyte
 00A4           ; 功    能: 向12864液晶写入一个字节数据或者指令
 00A4           ; 参    数: DatCmd--为iDat时是数据,为iCmd时是指令
 00A4           ;                 dByte--为写入12864的数据或者指令
 00A4           ; 返回值  : 无
 00A4           ; /********************************************/
 00A4           ; void LCD12864_sendbyte(uchar DatCmd, uchar dByte)
 00A4           ; {
 00A4                   .dbline 68
 00A4           ;       if (DatCmd == iCmd)             //指令操作
 00A4 6623              tst R22
 00A6 11F4              brne L20
 00A8                   .dbline 69
 00A8           ;               LCDb_CLR_RS;
 00A8 C498              cbi 0x18,4
 00AA 01C0              xjmp L21
 00AC           L20:
 00AC                   .dbline 71
 00AC           ;       else
 00AC           ;               LCDb_SET_RS;
 00AC C49A              sbi 0x18,4
 00AE           L21:
 00AE                   .dbline 73
 00AE           ;               
 00AE           ;       LCDb_CLR_RW;                    //写操作
 00AE C598              cbi 0x18,5
 00B0                   .dbline 74
 00B0           ;       LCDb_SET_E;
 00B0 C69A              sbi 0x18,6
 00B2                   .dbline 75
 00B2           ;       LCDb_DO = dByte;                //写入数据
 00B2 4BBB              out 0x1b,R20
 00B4                   .dbline 76
 00B4           ;       Delayus(100);
 00B4 04E6              ldi R16,100
 00B6 10E0              ldi R17,0

⌨️ 快捷键说明

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