h08sci.lis

来自「项目是为日本瑞萨工作所做的BAKE炉温控系统 整个文件夹包括设计文档」· LIS 代码 · 共 367 行 · 第 1/2 页

LIS
367
字号
                        .module H08SCI.c
                        .area text
 0000                   .dbfile H08SCI.c
 0000                   .dbfunc e SCIInit _SCIInit fV
 0000           _SCIInit::
 0000                   .dbline -1
 0000                   .dbline 22
 0000           ; //[H08SCI.c]串行通信-------------------------------------------------------*
 0000           ; //本文件包含:                                                              *  
 0000           ; //(1)SCIInit:串行口初始化                                                  *
 0000           ; //(2)SCISend1:串行发送1个字节                                              *
 0000           ; //(3)SCISendN:串行发送n字节                                                *
 0000           ; //(4)SCIRe1:串行接收1字节                                                  *
 0000           ; //(5)SCIReN:串行接收n字节                                                  *
 0000           ; //硬件连接:                                                                *
 0000           ; //    MCU的SCI模块接口与PC方的COM1相连                                     *
 0000           ; //-------------------------------------------------------------------------*
 0000           ; 
 0000           ; //头文件
 0000           ; #include "H08SCI.h"
 0000           ; 
 0000           ; //SCIInit:串行口初始化-----------------------------------------------------*
 0000           ; //功 能:对串行口进行初始化,默认为允许SCI,正常码输出,8位数据,无校验,        *
 0000           ; //      允许发送器,允许接收器.查询方式收发,波特率为9600(设fBUS=2.4576MHz) *                                       
 0000           ; //参 数:无                                                                 *
 0000           ; //返 回:无                                                                 *
 0000           ; //-------------------------------------------------------------------------*
 0000           ; void SCIInit(void)
 0000           ; {   //1.总线频率fBUS=2.4576MHz,定义波特率Bt=9600
 0000                   .dbline 23
 0000           ;     SCBR=0b00000010;
 0000 A602              lda #2
 0002 B719              sta 0x19
 0004                   .dbline 25
 0004           ;     //2.设置允许SCI,正常码输出、8位数据、无校验
 0004           ;     SCC1=0b01000000; 
 0004 A640              lda #64
 0006 B713              sta 0x13
 0008                   .dbline 27
 0008           ;     //3.设置允许发送、允许接收,查询方式收发     
 0008           ;     SCC2=0b00001100; 
 0008 A60C              lda #12
 000A B714              sta 0x14
 000C                   .dbline -2
 000C           L27:
 000C                   .dbline 0 ; func end
 000C 81                rts
 000D                   .dbend
 000D                   .dbfunc e SCISend1 _SCISend1 fV
 000D           ;              o -> 2,X
 000D           _SCISend1::
 000D                   .dbline -1
 000D 95                tsx
 000E                   .dbline 36
 000E           ; }
 000E           ; 
 000E           ; //SCISend1:串行发送1个字节-------------------------------------------------*
 000E           ; //功  能:串行发送1个字节                                                   *
 000E           ; //参  数:要发送的数据                                                      *
 000E           ; //返  回:无                                                                *
 000E           ; //-------------------------------------------------------------------------*
 000E           ; void SCISend1(INT8U o)
 000E           ; {
 000E 2009              bra L30
 0010           L29:
 0010                   .dbline 39
 0010           ;    //判断ReStatusR的第SendTestBit位是否为1,是1可以发送
 0010           ;    while(1)   
 0010           ;       if ((ReSendStatusR & (1<<SendTestBit)) != 0)
 0010 0F1606            brclr #7,0x16,L32
 0013                   .dbline 40
 0013           ;       {
 0013                   .dbline 41
 0013           ;               ReSendDataR=o;
 0013 E602              lda 2,X
 0015 B718              sta 0x18
 0017                   .dbline 42
 0017           ;               break;
 0017 2002              bra L31
 0019           L32:
 0019           L30:
 0019                   .dbline 38
 0019 20F5              bra L29
 001B           L31:
 001B                   .dbline -2
 001B           L28:
 001B                   .dbline 0 ; func end
 001B 81                rts
 001C                   .dbsym l o 2 c
 001C                   .dbend
 001C                   .dbfunc e SCISendN _SCISendN fV
 001C           ;              i -> 0,X
 001C           ;             ch -> 5,X
 001C           ;              n -> 4,X
 001C           _SCISendN::
 001C                   .dbline -1
 001C A7FE              ais #-2
 001E 95                tsx
 001F                   .dbline 52
 001F           ;       }
 001F           ; }
 001F           ; 
 001F           ; //SCISendN:串行发送N个字节-------------------------------------------------*
 001F           ; //功  能:发送数组中的N个字节数据                                           *
 001F           ; //参  数:待发送数据的字节数及存放这些数据的数组首地址                      *          
 001F           ; //返  回:无                                                                *
 001F           ; //-------------------------------------------------------------------------*
 001F           ; void SCISendN(INT8U n,INT8U ch[])
 001F           ; {
 001F                   .dbline 54
 001F           ;   int i;
 001F           ;   for(i=0;i<n;i++)          
 001F 6F01              clr 1,X
 0021 7F                clr ,X
 0022 201F              bra L38
 0024           L35:
 0024                   .dbline 55
 0024 E601              lda 1,X
 0026 EB06              add 6,X
 0028 B700              sta *__r1
 002A F6                lda ,X
 002B E905              adc 5,X
 002D B700              sta *__r0
 002F 5500              ldhx *__r0
 0031 F6                lda ,x
 0032 87                psha
 0033 CD000D            jsr _SCISend1
 0036 A701              ais #1
 0038 95                tsx
 0039           L36:
 0039                   .dbline 54
 0039 E601              lda 1,X
 003B AB01              add #1
 003D E701              sta 1,X
 003F F6                lda ,X
 0040 A900              adc #0
 0042 F7                sta ,X
 0043           L38:
 0043                   .dbline 54
 0043 3F00              clr *__r0
 0045 E604              lda 4,X
 0047 B700              sta *__r1
 0049 E601              lda 1,X
 004B B700              sta *__r3
 004D F6                lda ,X
 004E B700              sta *__r2
 0050 5500              ldhx *__r2
 0052 7500              cphx *__r0
 0054 95                tsx
 0055 91CD              blt L35
 0057                   .dbline -2
 0057           L34:
 0057 A702              ais #2
 0059                   .dbline 0 ; func end
 0059 81                rts
 005A                   .dbsym l i 0 I
 005A                   .dbsym l ch 5 pc
 005A                   .dbsym l n 4 c
 005A                   .dbend
 005A                   .dbfunc e SCIRe1 _SCIRe1 fc
 005A           ;              i -> 0,X
 005A           ;              k -> 1,X
 005A           ;              p -> 5,X
 005A           _SCIRe1::
 005A                   .dbline -1
 005A A7FD              ais #-3
 005C 95                tsx
 005D                   .dbline 65
 005D           ;       SCISend1(ch[i]);
 005D           ; }
 005D           ; 
 005D           ; //SCIRe1:串行收一个字节数据------------------------------------------------*
 005D           ; //功  能:从串行口接收1个字节的数据                                         *
 005D           ; //参  数:标志指针p                                                         *
 005D           ; //返  回:接收到的数据(若接收失败,返回0xff)                              * 
 005D           ; //说  明:参数*p带回接收标志.*p=0,收到数据;*p=1,未收到数据                  *
 005D           ; //-------------------------------------------------------------------------*
 005D           ; INT8U SCIRe1(INT8U *p)
 005D           ; {  
 005D                   .dbline 69
 005D           ;    INT16U k;
 005D           ;    INT8U  i;
 005D           ;    //ReStatusR第ReTestBit位为1表示可接收数据
 005D           ;    for(k=0;k<0xfbbb;k++)

⌨️ 快捷键说明

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