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

📄 memu.lis

📁 为苏州一家公司所做的的恒温恒湿车间控制 系统
💻 LIS
📖 第 1 页 / 共 4 页
字号:
                        .module memu.c
                        .area text
 0000                   .dbfile memu.c
 0000                   .dbfunc e Print _Print fV
 0000           ;       StartPos -> 0,X
 0000           ;              i -> 1,X
 0000           ;            Num -> 8,X
 0000           ;         SringP -> 6,X
 0000           ;          RowNO -> 5,X
 0000           ;         LineNo -> 4,X
 0000           _Print::
 0000                   .dbline -1
 0000 A7FE              ais #-2
 0002 95                tsx
 0003                   .dbline 15
 0003           ; 
 0003           ; #include "Includes.h"
 0003           ; /*Print:把需要显示的字符串传送给显示缓冲区---------------------------------*
 0003           ; *功能:把需要显示的字符串传送给显示缓冲区从(行号LineNo,列号RowNO)开始的区域 *
 0003           ; *参数:全局变量LcdShowBuff:64字节显示缓冲区(4行*16列)                       *
 0003           ; *     LineNo:在Lcd上显示的起始行号(1--4)                                   *
 0003           ; *     RowNO:在Lcd上显示的起始列号(1--16)                                   *
 0003           ; *     SringP:指向需在Lcd上显示的字符串的指针                               *
 0003           ; *     Num:字符串长度                                                       *
 0003           ; *调用实例:Print(2,3,"苏州大学",8)                                          *
 0003           ; *         在第2行第3列开始显示"苏州大学"4个汉字(共8个字符)                 *
 0003           ; *返回:无                                                                   *
 0003           ; *-------------------------------------------------------------------------*/
 0003           ; void Print(INT8U LineNo,INT8U RowNO,INT8U * SringP,INT8U Num)
 0003           ; {
 0003                   .dbline 18
 0003           ;      INT8U i;          //循环控制变量
 0003           ;      INT8U StartPos;   //在显示缓冲区(0--63)中的起始位置
 0003           ;      StartPos = (LineNo-1)*16+(RowNO-1);
 0003 E605              lda 5,X
 0005 A001              sub #1
 0007 B700              sta *__r0
 0009 E604              lda 4,X
 000B A001              sub #1
 000D 62                nsa
 000E A4F0              and #-16
 0010 BB00              add *__r0
 0012 F7                sta ,X
 0013                   .dbline 19
 0013           ;      for(i=0;i<Num;i++)
 0013 6F01              clr 1,X
 0015 203F              bra L5
 0017           L2:
 0017                   .dbline 20
 0017           ;      {
 0017                   .dbline 22
 0017           ;         //已超出Lcd显示缓冲区的边界,退出
 0017           ;         if((StartPos+i)>63)  break;
 0017 F6                lda ,X
 0018 EB01              add 1,X
 001A A13F              cmp #63
 001C 2302              bls L6
 001E                   .dbline 22
 001E 203C              bra L4
 0020           L6:
 0020                   .dbline 23
 0020 3F00              clr *__r0
 0022 E601              lda 1,X
 0024 B700              sta *__r1
 0026 3F00              clr *__r2
 0028 F6                lda ,X
 0029 BB00              add *__r1
 002B B700              sta *__r1
 002D B600              lda *__r2
 002F B900              adc *__r0
 0031 B700              sta *__r0
 0033 B600              lda *__r1
 0035 AB00              add #<_LcdShowBuff
 0037 B700              sta *__r1
 0039 B600              lda *__r0
 003B A900              adc #>_LcdShowBuff
 003D B700              sta *__r0
 003F 3F00              clr *__r2
 0041 E601              lda 1,X
 0043 EB07              add 7,X
 0045 B700              sta *__r3
 0047 B600              lda *__r2
 0049 E906              adc 6,X
 004B B700              sta *__r2
 004D 5500              ldhx *__r2
 004F F6                lda ,x
 0050 5500              ldhx *__r0
 0052 F7                sta ,x
 0053 95                tsx
 0054                   .dbline 24
 0054           L3:
 0054                   .dbline 19
 0054 6C01              inc 1,X
 0056           L5:
 0056                   .dbline 19
 0056 E601              lda 1,X
 0058 E108              cmp 8,X
 005A 25BB              blo L2
 005C           L4:
 005C                   .dbline -2
 005C           L1:
 005C A702              ais #2
 005E                   .dbline 0 ; func end
 005E 81                rts
 005F                   .dbsym l StartPos 0 c
 005F                   .dbsym l i 1 c
 005F                   .dbsym l Num 8 c
 005F                   .dbsym l SringP 6 pc
 005F                   .dbsym l RowNO 5 c
 005F                   .dbsym l LineNo 4 c
 005F                   .dbend
 005F                   .dbfunc e Clear _Clear fV
 005F           ;              i -> 0,X
 005F           _Clear::
 005F                   .dbline -1
 005F A7FF              ais #-1
 0061 95                tsx
 0062                   .dbline 32
 0062           ;         LcdShowBuff[StartPos+i]=SringP[i];
 0062           ;      }
 0062           ; }  
 0062           ; /*Clear:清空显示缓冲区-----------------------------------------------------*
 0062           ; *功能:清空显示缓冲区,把显示缓冲区的内容全部赋为空格                       *
 0062           ; *参数:全局变量LcdShowBuff:64字节显示缓冲区(4行*16列)                       *
 0062           ; *返回:无                                                                   *
 0062           ; *-------------------------------------------------------------------------*/
 0062           ; void Clear(void)
 0062           ; {
 0062                   .dbline 34
 0062           ;      INT8U i;          //循环控制变量
 0062           ;      for(i=0;i<64;i++)
 0062 7F                clr ,X
 0063 2014              bra L12
 0065           L9:
 0065                   .dbline 35
 0065 3F00              clr *__r0
 0067 F6                lda ,X
 0068 AB00              add #<_LcdShowBuff
 006A B700              sta *__r1
 006C B600              lda *__r0
 006E A900              adc #>_LcdShowBuff
 0070 B700              sta *__r0
 0072 A620              lda #32
 0074 5500              ldhx *__r0
 0076 F7                sta ,x
 0077 95                tsx
 0078           L10:
 0078                   .dbline 34
 0078 7C                inc ,X
 0079           L12:
 0079                   .dbline 34
 0079 F6                lda ,X
 007A A140              cmp #64
 007C 25E7              blo L9
 007E                   .dbline -2
 007E           L8:
 007E A701              ais #1
 0080                   .dbline 0 ; func end
 0080 81                rts
 0081                   .dbsym l i 0 c
 0081                   .dbend
 0081                   .dbfunc e NumFormatChange _NumFormatChange fV
 0081           ;              k -> 0,X
 0081           ;              j -> 1,X
 0081           ;           sign -> 2,X
 0081           ;       IntDataP -> 3,X
 0081           ;              i -> 5,X
 0081           ;           flag -> 12,X
 0081           ;           Data -> 10,X
 0081           ;            ReP -> 8,X
 0081           _NumFormatChange::
 0081                   .dbline -1
 0081 A7FA              ais #-6
 0083 95                tsx
 0084                   .dbline 48
 0084           ;         LcdShowBuff[i]=' ';
 0084           ; } 
 0084           ; /*NumFormatChange:数据格式转换子程序---------------------------------------*
 0084           ; *功能:将3个字节的压缩BCD码数据转换为5个字节可显示的ASCII码数据             *
 0084           ; *参数:Data[0--2]三个字节的数据:前两个字节压缩BCD码(00 00 - 99 99)         *
 0084           ; *                               第三字节为符号位(-、+)                     *
 0084           ; *     ReP[0--4]存放5个字节的转换结果(注意:实际是ASCII码)                   *
 0084           ; *     flag:0-设定值调整,无小数位;1-显示值调整,有一位小数位                 *
 0084           ; *举例:Data[0--2]:12 35 +  ->ReP[0--5]:+ 1 2 3 . 5                        *
 0084           ; *     Data[0--2]:01 92 -  ->ReP[0--5]:-   1 9 . 2                        *
 0084           ; *返回:无                                                                   *
 0084           ; *-------------------------------------------------------------------------*/
 0084           ; void NumFormatChange(INT8U * ReP,INT8U * Data,INT8U flag)
 0084           ; { 
 0084                   .dbline 53
 0084           ;      INT8U i,j,k;           //循环控制变量
 0084           ;      INT16U * IntDataP;  //数据
 0084           ;      INT8U sign;         //符号
 0084           ;      //1:得到可以显示的数据
 0084           ;      IntDataP=(INT16U *)Data;     
 0084 E60A              lda 10,X
 0086 E703              sta 3,X
 0088 E60B              lda 11,X
 008A E704              sta 4,X
 008C                   .dbline 54
 008C           ;      sign=Data[2];
 008C E60B              lda 11,X
 008E AB02              add #2
 0090 B700              sta *__r1
 0092 E60A              lda 10,X
 0094 A900              adc #0
 0096 B700              sta *__r0
 0098 5500              ldhx *__r0
 009A F6                lda ,x
 009B 95                tsx
 009C E702              sta 2,X
 009E                   .dbline 56
 009E           ;      
 009E           ;      ReP[4]=(*IntDataP)%10+'0';
 009E E603              lda 3,X
 00A0 EE04              ldx 4,X
 00A2 87                psha
 00A3 8A                pulh
 00A4 E601              lda 1,x
 00A6 B700              sta *__r1
 00A8 F6                lda ,x
 00A9 95                tsx
 00AA B700              sta *__r0
 00AC 4E0000            mov *__r1,*__rlo
 00AF 4E0000            mov *__r0,*__rhi
 00B2 A60A              lda #10
 00B4 87                psha
 00B5 4F                clra
 00B6 87                psha
 00B7 CD0000            jsr __divmod16u
 00BA 86                pula
 00BB B700              sta *__r0
 00BD 86                pula
 00BE AB30              add #48
 00C0 B700              sta *__r1
 00C2 B600              lda *__r0
 00C4 A900              adc #0
 00C6 E609              lda 9,X
 00C8 AB04              add #4
 00CA B700              sta *__r3
 00CC E608              lda 8,X
 00CE A900              adc #0
 00D0 B700              sta *__r2
 00D2 B600              lda *__r1
 00D4 5500              ldhx *__r2
 00D6 F7                sta ,x
 00D7 95                tsx
 00D8                   .dbline 57
 00D8           ;      ReP[3]=((*IntDataP)/10)%10+'0';
 00D8 E603              lda 3,X
 00DA EE04              ldx 4,X
 00DC 87                psha
 00DD 8A                pulh
 00DE E601              lda 1,x
 00E0 B700              sta *__r1
 00E2 F6                lda ,x
 00E3 95                tsx
 00E4 B700              sta *__r0
 00E6 4E0000            mov *__r1,*__rlo
 00E9 4E0000            mov *__r0,*__rhi
 00EC A60A              lda #10
 00EE 87                psha
 00EF 4F                clra
 00F0 87                psha
 00F1 CD0000            jsr __divmod16u
 00F4 A702              ais #2
 00F6 4E0000            mov *__rhi,*__r0
 00F9 4E0000            mov *__rlo,*__r1
 00FC 4E0000            mov *__r1,*__rlo
 00FF 4E0000            mov *__r0,*__rhi
 0102 A60A              lda #10
 0104 87                psha
 0105 4F                clra
 0106 87                psha
 0107 CD0000            jsr __divmod16u
 010A 86                pula
 010B B700              sta *__r0
 010D 86                pula
 010E AB30              add #48
 0110 B700              sta *__r1
 0112 B600              lda *__r0
 0114 A900              adc #0
 0116 E609              lda 9,X
 0118 AB03              add #3
 011A B700              sta *__r3
 011C E608              lda 8,X
 011E A900              adc #0
 0120 B700              sta *__r2
 0122 B600              lda *__r1
 0124 5500              ldhx *__r2
 0126 F7                sta ,x
 0127 95                tsx
 0128                   .dbline 58
 0128           ;      ReP[2]=((*IntDataP)/100)%10+'0';
 0128 E603              lda 3,X
 012A EE04              ldx 4,X
 012C 87                psha
 012D 8A                pulh
 012E E601              lda 1,x
 0130 B700              sta *__r1
 0132 F6                lda ,x
 0133 95                tsx
 0134 B700              sta *__r0
 0136 4E0000            mov *__r1,*__rlo
 0139 4E0000            mov *__r0,*__rhi
 013C A664              lda #100
 013E 87                psha
 013F 4F                clra
 0140 87                psha
 0141 CD0000            jsr __divmod16u
 0144 A702              ais #2
 0146 4E0000            mov *__rhi,*__r0
 0149 4E0000            mov *__rlo,*__r1
 014C 4E0000            mov *__r1,*__rlo
 014F 4E0000            mov *__r0,*__rhi
 0152 A60A              lda #10
 0154 87                psha
 0155 4F                clra

⌨️ 快捷键说明

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