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

📄 h08sci.lis

📁 项目是为日本瑞萨工作所做的BAKE炉温控系统 整个文件夹包括设计文档
💻 LIS
字号:
                        .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           L1:
 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 L4
 0010           L3:
 0010                   .dbline 39
 0010           ;    //判断ReStatusR的第SendTestBit位是否为1,是1可以发送
 0010           ;    while(1)   
 0010           ;       if ((ReSendStatusR & (1<<SendTestBit)) != 0)
 0010 0F1606            brclr #7,0x16,L6
 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 L5
 0019           L6:
 0019           L4:
 0019                   .dbline 38
 0019 20F5              bra L3
 001B           L5:
 001B                   .dbline -2
 001B           L2:
 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 L12
 0024           L9:
 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           L10:
 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           L12:
 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 L9
 0057                   .dbline -2
 0057           L8:
 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++)
 005D 6F02              clr 2,X
 005F 6F01              clr 1,X
 0061 2021              bra L17
 0063           L14:
 0063                   .dbline 70
 0063           ;         if ((ReSendStatusR & (1<<ReTestBit)) != 0)
 0063 0B1612            brclr #5,0x16,L18
 0066                   .dbline 71
 0066           ;         {
 0066                   .dbline 72
 0066           ;             i=ReSendDataR;
 0066 B618              lda 0x18
 0068 F7                sta ,X
 0069                   .dbline 73
 0069           ;             *p=0x00; 
 0069 E606              lda 6,X
 006B B700              sta *__r1
 006D E605              lda 5,X
 006F B700              sta *__r0
 0071 4F                clra
 0072 5500              ldhx *__r0
 0074 F7                sta ,x
 0075 95                tsx
 0076                   .dbline 74
 0076           ;             break;
 0076 201C              bra L16
 0078           L18:
 0078           L15:
 0078                   .dbline 69
 0078 E602              lda 2,X
 007A AB01              add #1
 007C E702              sta 2,X
 007E E601              lda 1,X
 0080 A900              adc #0
 0082 E701              sta 1,X
 0084           L17:
 0084                   .dbline 69
 0084 E602              lda 2,X
 0086 B700              sta *__r1
 0088 E601              lda 1,X
 008A B700              sta *__r0
 008C 5500              ldhx *__r0
 008E 65FBBB            cphx #-1093
 0091 95                tsx
 0092 25CF              blo L14
 0094           L16:
 0094                   .dbline 77
 0094           ;         } 
 0094           ;    //接受失败
 0094           ;    if(k>=0xfbbb) 
 0094 E602              lda 2,X
 0096 B700              sta *__r1
 0098 E601              lda 1,X
 009A B700              sta *__r0
 009C 5500              ldhx *__r0
 009E 65FBBB            cphx #-1093
 00A1 95                tsx
 00A2 2511              blo L20
 00A4                   .dbline 78
 00A4           ;    {
 00A4                   .dbline 79
 00A4           ;         i=0xff;
 00A4 A6FF              lda #-1
 00A6 F7                sta ,X
 00A7                   .dbline 80
 00A7           ;         *p=0x01;
 00A7 E606              lda 6,X
 00A9 B700              sta *__r1
 00AB E605              lda 5,X
 00AD B700              sta *__r0
 00AF A601              lda #1
 00B1 5500              ldhx *__r0
 00B3 F7                sta ,x
 00B4 95                tsx
 00B5                   .dbline 81
 00B5           ;    }
 00B5           L20:
 00B5                   .dbline 82
 00B5           ;    return i;
 00B5 F6                lda ,X
 00B6                   .dbline -2
 00B6           L13:
 00B6 A703              ais #3
 00B8                   .dbline 0 ; func end
 00B8 81                rts
 00B9                   .dbsym l i 0 c
 00B9                   .dbsym l k 1 i
 00B9                   .dbsym l p 5 pc
 00B9                   .dbend
 00B9                   .dbfunc e SCIReN _SCIReN fc
 00B9           ;             fp -> 0,X
 00B9           ;              m -> 1,X
 00B9           ;             ch -> 6,X
 00B9           ;              n -> 5,X
 00B9           _SCIReN::
 00B9                   .dbline -1
 00B9 A7FD              ais #-3
 00BB 95                tsx
 00BC                   .dbline 91
 00BC           ; }
 00BC           ; 
 00BC           ; //SCIReN:HC08串行接收N个字节-----------------------------------------------*
 00BC           ; //功  能:接收N个字节数据,并存放在ch数组中                                  *
 00BC           ; //参  数:待接收的数据字节数及其存放的数组首地址                            *
 00BC           ; //返  回:接收标志=0 收到数据,=1 未收到数据                                 *
 00BC           ; //-------------------------------------------------------------------------*
 00BC           ; INT8U SCIReN(INT8U n,INT8U ch[])
 00BC           ; {
 00BC                   .dbline 94
 00BC           ;    int m;                  
 00BC           ;    INT8U fp;
 00BC           ;    m=0;
 00BC 6F02              clr 2,X
 00BE 6F01              clr 1,X
 00C0 2031              bra L24
 00C2           L23:
 00C2                   .dbline 96
 00C2           ;    while (m<n)
 00C2           ;    {            
 00C2                   .dbline 97
 00C2           ;         ch[m]=SCIRe1(&fp); 
 00C2 89                pshx
 00C3 8B                pshh
 00C4 CD005A            jsr _SCIRe1
 00C7 A702              ais #2
 00C9 95                tsx
 00CA B700              sta *__r1
 00CC E602              lda 2,X
 00CE EB07              add 7,X
 00D0 B700              sta *__r3
 00D2 E601              lda 1,X
 00D4 E906              adc 6,X
 00D6 B700              sta *__r2
 00D8 B600              lda *__r1
 00DA 5500              ldhx *__r2
 00DC F7                sta ,x
 00DD 95                tsx
 00DE                   .dbline 98
 00DE           ;         if (fp==1) return 1;
 00DE F6                lda ,X
 00DF A101              cmp #1
 00E1 2604              bne L26
 00E3                   .dbline 98
 00E3 A601              lda #1
 00E5 2022              bra L22
 00E7           L26:
 00E7                   .dbline 99
 00E7 E602              lda 2,X
 00E9 AB01              add #1
 00EB E702              sta 2,X
 00ED E601              lda 1,X
 00EF A900              adc #0
 00F1 E701              sta 1,X
 00F3                   .dbline 100
 00F3           L24:
 00F3                   .dbline 95
 00F3 3F00              clr *__r0
 00F5 E605              lda 5,X
 00F7 B700              sta *__r1
 00F9 E602              lda 2,X
 00FB B700              sta *__r3
 00FD E601              lda 1,X
 00FF B700              sta *__r2
 0101 5500              ldhx *__r2
 0103 7500              cphx *__r0
 0105 95                tsx
 0106 91BA              blt L23
 0108                   .dbline 101
 0108           ;         m++;
 0108           ;    } 
 0108           ;    return 0;   
 0108 4F                clra
 0109                   .dbline -2
 0109           L22:
 0109 A703              ais #3
 010B                   .dbline 0 ; func end
 010B 81                rts
 010C                   .dbsym l fp 0 c
 010C                   .dbsym l m 1 I
 010C                   .dbsym l ch 6 pc
 010C                   .dbsym l n 5 c
 010C                   .dbend

⌨️ 快捷键说明

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