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

📄 sci.lis

📁 为苏州一家公司所做的的恒温恒湿车间控制 系统
💻 LIS
📖 第 1 页 / 共 2 页
字号:
                        .module SCI.C
                        .area text
 0000                   .dbfile SCI.C
 0000                   .dbfunc e SCIInit _SCIInit fV
 0000           _SCIInit::
 0000                   .dbline -1
 0000                   .dbline 20
 0000           ; /*-----------------------------------------------------*
 0000           ; *文件描述:本文件包含了串行通信的4子程序,分别为:        * 
 0000           ; *(1)SCIInit:SCI初始化
 0000           ; *(2)SCISend1:串行发送1字节                             *
 0000           ; *(3)SCISendN:串行发送n字节                             *
 0000           ; *(4)SCIRe1:串行接收1字节                               *
 0000           ; *(5)SCIReN:串行接收n字节                               *
 0000           ; *-------------《嵌入式应用技术基础教程》--------------*/
 0000           ; //[以下为子程序源代码]
 0000           ; //[包含头文件]
 0000           ; #include "Includes.h"
 0000           ; /*SCIInit:串行口初始化子程序---------------------------*
 0000           ; *功 能:对串行口进行初始化,默认为允许SCI,正常码输出,8位 *
 0000           ; *      数据,无校验等,允许发送器允许接收器.查询方式收发,*
 0000           ; *      波特率为9600(设fBUS=2.4576MHz)                 *
 0000           ; *参 数:无                                              *
 0000           ; *返 回:无                                              *
 0000           ; *-----------------------------------------------------*/
 0000           ; void SCIInit(void)
 0000           ;  { 
 0000                   .dbline 22
 0000           ;       //总线频率fBUS=2.4576MHz,定义波特率Bt=9600
 0000           ;     SCBR=0b00000010;
 0000 A602              lda #2
 0002 B719              sta 0x19
 0004                   .dbline 24
 0004           ;     //设置允许SCI,正常码输出、8位数据、无校验
 0004           ;     SCC1=0b01000000; 
 0004 A640              lda #64
 0006 B713              sta 0x13
 0008                   .dbline 26
 0008           ;     //设置允许发送、允许接收,查询方式收发     
 0008           ;     SCC2=0b00001100; 
 0008 A60C              lda #12
 000A B714              sta 0x14
 000C                   .dbline -2
 000C           L1:
 000C                   .dbline 0 ; func end
 000C 81                rts
 000D                   .dbend
 000D                   .dbfunc e SCISend1 _SCISend1 fV
 000D           ;              i -> 0,X
 000D           ;              j -> 1,X
 000D           ;              o -> 4,X
 000D           _SCISend1::
 000D                   .dbline -1
 000D A7FE              ais #-2
 000F 95                tsx
 0010                   .dbline 34
 0010           ;  }
 0010           ; /*SCISend1:串行发送1个字节-----------------------------*
 0010           ; *功  能:串行发送1个字节                                *
 0010           ; *参  数:要发送的数据                                   *
 0010           ; *返  回:无                                             *
 0010           ; *-----------------------------------------------------*/
 0010           ; void SCISend1(INT8U o)
 0010           ;  {//判断ReStatusR的第SendTestBit位是否为1,是1可以发送
 0010 201E              bra L4
 0012           L3:
 0012                   .dbline 37
 0012           ;    INT8U i,j;
 0012           ;    while(1)   
 0012           ;       if ((ReSendStatusR & (1<<SendTestBit)) != 0)
 0012 0F161B            brclr #7,0x16,L6
 0015                   .dbline 38
 0015           ;          { ReSendDataR=o;
 0015                   .dbline 38
 0015 E604              lda 4,X
 0017 B718              sta 0x18
 0019                   .dbline 39
 0019           ;            for(i=0;i<100;i++)
 0019 7F                clr ,X
 001A 200D              bra L11
 001C           L8:
 001C                   .dbline 40
 001C 6F01              clr 1,X
 001E 2002              bra L15
 0020           L12:
 0020                   .dbline 40
 0020           L13:
 0020                   .dbline 40
 0020 6C01              inc 1,X
 0022           L15:
 0022                   .dbline 40
 0022 E601              lda 1,X
 0024 A132              cmp #50
 0026 25F8              blo L12
 0028           L9:
 0028                   .dbline 39
 0028 7C                inc ,X
 0029           L11:
 0029                   .dbline 39
 0029 F6                lda ,X
 002A A164              cmp #100
 002C 25EE              blo L8
 002E                   .dbline 41
 002E           ;              for(j=0;j<50;j++);
 002E           ;            break;}
 002E 2002              bra L5
 0030           L6:
 0030           L4:
 0030                   .dbline 36
 0030 20E0              bra L3
 0032           L5:
 0032                   .dbline -2
 0032           L2:
 0032 A702              ais #2
 0034                   .dbline 0 ; func end
 0034 81                rts
 0035                   .dbsym l i 0 c
 0035                   .dbsym l j 1 c
 0035                   .dbsym l o 4 c
 0035                   .dbend
 0035                   .dbfunc e SCISendN _SCISendN fV
 0035           ;              i -> 0,X
 0035           ;             ch -> 5,X
 0035           ;              n -> 4,X
 0035           _SCISendN::
 0035                   .dbline -1
 0035 A7FE              ais #-2
 0037 95                tsx
 0038                   .dbline 49
 0038           ;  }
 0038           ; /*SCISendN:串行发送N个字节-----------------------------*
 0038           ; *功  能:发送数组中的N个字节数据                        *
 0038           ; *参  数:待发送的数据字节数及其要存放的数组首地址       *          
 0038           ; *返  回:无                                             *
 0038           ; *-----------------------------------------------------*/
 0038           ; void SCISendN(INT8U n,INT8U ch[])
 0038           ;   {INT16U i;
 0038                   .dbline 50
 0038           ;    for(i=0;i<n;i++)          
 0038 6F01              clr 1,X
 003A 7F                clr ,X
 003B 201F              bra L20
 003D           L17:
 003D                   .dbline 51
 003D E601              lda 1,X
 003F EB06              add 6,X
 0041 B700              sta *__r1
 0043 F6                lda ,X
 0044 E905              adc 5,X
 0046 B700              sta *__r0
 0048 5500              ldhx *__r0
 004A F6                lda ,x
 004B 87                psha
 004C CD000D            jsr _SCISend1
 004F A701              ais #1
 0051 95                tsx
 0052           L18:
 0052                   .dbline 50
 0052 E601              lda 1,X
 0054 AB01              add #1
 0056 E701              sta 1,X
 0058 F6                lda ,X
 0059 A900              adc #0
 005B F7                sta ,X
 005C           L20:
 005C                   .dbline 50
 005C 3F00              clr *__r0
 005E E604              lda 4,X
 0060 B700              sta *__r1
 0062 E601              lda 1,X
 0064 B700              sta *__r3
 0066 F6                lda ,X
 0067 B700              sta *__r2
 0069 5500              ldhx *__r2
 006B 7500              cphx *__r0
 006D 95                tsx
 006E 25CD              blo L17
 0070                   .dbline -2
 0070           L16:
 0070 A702              ais #2
 0072                   .dbline 0 ; func end
 0072 81                rts
 0073                   .dbsym l i 0 s
 0073                   .dbsym l ch 5 pc
 0073                   .dbsym l n 4 c
 0073                   .dbend
 0073                   .dbfunc e SCIRe1 _SCIRe1 fc
 0073           ;              i -> 0,X
 0073           ;              k -> 1,X
 0073           ;              p -> 5,X
 0073           _SCIRe1::
 0073                   .dbline -1
 0073 A7FD              ais #-3
 0075 95                tsx
 0076                   .dbline 60
 0076           ;       SCISend1(ch[i]);
 0076           ;   }
 0076           ; /*SCIRe1:串行收一个字节数据----------------------------*
 0076           ; *功  能:从串行口接收1个字节的数据                      *         
 0076           ; *参  数:标志指针p                                      *
 0076           ; *返  回:接收到的数据(若接收失败,返回0xff)           * 
 0076           ; *说  明:参数*p带回接收标志=0收到数据,=1未收到数据      *  
 0076           ; *-----------------------------------------------------*/
 0076           ; INT8U SCIRe1(INT8U *p)
 0076           ;  { INT16U k;
 0076                   .dbline 63
 0076           ;    INT8U i;
 0076           ;    //ReStatusR第ReTestBit位为1表示可接收数据
 0076           ;       for(k=0;k<0xfbbb;k++)
 0076 6F02              clr 2,X

⌨️ 快捷键说明

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