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

📄 sci.lis

📁 项目是为日本瑞萨工作所做的BAKE炉温控系统 整个文件夹包括设计文档
💻 LIS
字号:
                        .module SCI.c
                        .area text
 0000                   .dbfile SCI.c
 0000                   .dbfunc e SCISend1 _SCISend1 fV
 0000           ;              o -> 2,X
 0000           _SCISend1::
 0000                   .dbline -1
 0000 95                tsx
 0001                   .dbline 17
 0001           ; /*-------------------------------------------------------------------------*
 0001           ; *文件描述:本文件包含了串行通信的4子程序,分别为:                            *  
 0001           ; *(1)SCISend1:串行发送1字节                                                 *
 0001           ; *(2)SCISendN:串行发送n字节                                                 *
 0001           ; *(3)SCIRe1:串行接收1字节                                                   *
 0001           ; *(4)SCIReN:串行接收n字节                                                   *
 0001           ; *----------------------《嵌入式应用技术基础教程》-------------------------*/
 0001           ; 
 0001           ; /*[包含头文件]*/
 0001           ; #include "SCI.h"
 0001           ; /*SCISend1:串行发送1个字节-------------------------------------------------*
 0001           ; *功  能:串行发送1个字节                                                    *
 0001           ; *参  数:要发送的数据                                                       *
 0001           ; *返  回:无                                                                 *
 0001           ; *-------------------------------------------------------------------------*/
 0001           ; void SCISend1(unsigned char o)
 0001           ; {
 0001 2009              bra L3
 0003           L2:
 0003                   .dbline 20
 0003           ;    //判断ReStatusR的第SendTestBit位是否为1,是1可以发送
 0003           ;    while(1)   
 0003           ;       if ((ReSendStatusR & (1<<SendTestBit)) != 0)
 0003 0F1606            brclr #7,0x16,L5
 0006                   .dbline 21
 0006           ;       {
 0006                   .dbline 22
 0006           ;               ReSendDataR=o;
 0006 E602              lda 2,X
 0008 B718              sta 0x18
 000A                   .dbline 23
 000A           ;               break;
 000A 2002              bra L4
 000C           L5:
 000C           L3:
 000C                   .dbline 19
 000C 20F5              bra L2
 000E           L4:
 000E                   .dbline -2
 000E           L1:
 000E                   .dbline 0 ; func end
 000E 81                rts
 000F                   .dbsym l o 2 c
 000F                   .dbend
 000F                   .dbfunc e SCISendN _SCISendN fV
 000F           ;              i -> 0,X
 000F           ;             ch -> 5,X
 000F           ;              n -> 4,X
 000F           _SCISendN::
 000F                   .dbline -1
 000F A7FE              ais #-2
 0011 95                tsx
 0012                   .dbline 32
 0012           ;       }
 0012           ; }
 0012           ; /*SCISendN:串行发送N个字节-------------------------------------------------*
 0012           ; *功  能:发送数组中的N个字节数据                                            *
 0012           ; *参  数:待发送的数据字节数及其要存放的数组首地址                           *          
 0012           ; *返  回:无                                                                 *
 0012           ; *-------------------------------------------------------------------------*/
 0012           ; void SCISendN(unsigned char n,unsigned char ch[])
 0012           ; {
 0012                   .dbline 34
 0012           ;   int i;
 0012           ;   for(i=0;i<n;i++)          
 0012 6F01              clr 1,X
 0014 7F                clr ,X
 0015 201F              bra L11
 0017           L8:
 0017                   .dbline 35
 0017 E601              lda 1,X
 0019 EB06              add 6,X
 001B B700              sta *__r1
 001D F6                lda ,X
 001E E905              adc 5,X
 0020 B700              sta *__r0
 0022 5500              ldhx *__r0
 0024 F6                lda ,x
 0025 87                psha
 0026 CD0000            jsr _SCISend1
 0029 A701              ais #1
 002B 95                tsx
 002C           L9:
 002C                   .dbline 34
 002C E601              lda 1,X
 002E AB01              add #1
 0030 E701              sta 1,X
 0032 F6                lda ,X
 0033 A900              adc #0
 0035 F7                sta ,X
 0036           L11:
 0036                   .dbline 34
 0036 3F00              clr *__r0
 0038 E604              lda 4,X
 003A B700              sta *__r1
 003C E601              lda 1,X
 003E B700              sta *__r3
 0040 F6                lda ,X
 0041 B700              sta *__r2
 0043 5500              ldhx *__r2
 0045 7500              cphx *__r0
 0047 95                tsx
 0048 91CD              blt L8
 004A                   .dbline -2
 004A           L7:
 004A A702              ais #2
 004C                   .dbline 0 ; func end
 004C 81                rts
 004D                   .dbsym l i 0 I
 004D                   .dbsym l ch 5 pc
 004D                   .dbsym l n 4 c
 004D                   .dbend
 004D                   .dbfunc e SCIRe1 _SCIRe1 fc
 004D           ;              i -> 0,X
 004D           ;              k -> 1,X
 004D           ;              p -> 5,X
 004D           _SCIRe1::
 004D                   .dbline -1
 004D A7FD              ais #-3
 004F 95                tsx
 0050                   .dbline 44
 0050           ;       SCISend1(ch[i]);
 0050           ; }
 0050           ; /*SCIRe1:串行收一个字节数据------------------------------------------------*
 0050           ; *功  能:从串行口接收1个字节的数据                                          *
 0050           ; *参  数:标志指针p                                                          *
 0050           ; *返  回:接收到的数据(若接收失败,返回0xff)                               * 
 0050           ; *说  明:参数*p带回接收标志=0 收到数据,=1 未收到数据                        *
 0050           ; *-------------------------------------------------------------------------*/
 0050           ; unsigned char SCIRe1(unsigned char *p)
 0050           ; {  
 0050                   .dbline 48
 0050           ;    unsigned int k;
 0050           ;    unsigned char i;
 0050           ;    //ReStatusR第ReTestBit位为1表示可接收数据
 0050           ;    for(k=0;k<0xfbbb;k++)
 0050 6F02              clr 2,X
 0052 6F01              clr 1,X
 0054 2021              bra L16
 0056           L13:
 0056                   .dbline 49
 0056           ;         if ((ReSendStatusR & (1<<ReTestBit)) != 0)
 0056 0B1612            brclr #5,0x16,L17
 0059                   .dbline 50
 0059           ;         {
 0059                   .dbline 51
 0059           ;             i=ReSendDataR;
 0059 B618              lda 0x18
 005B F7                sta ,X
 005C                   .dbline 52
 005C           ;             *p=0x00; 
 005C E606              lda 6,X
 005E B700              sta *__r1
 0060 E605              lda 5,X
 0062 B700              sta *__r0
 0064 4F                clra
 0065 5500              ldhx *__r0
 0067 F7                sta ,x
 0068 95                tsx
 0069                   .dbline 53
 0069           ;             break;
 0069 201C              bra L15
 006B           L17:
 006B           L14:
 006B                   .dbline 48
 006B E602              lda 2,X
 006D AB01              add #1
 006F E702              sta 2,X
 0071 E601              lda 1,X
 0073 A900              adc #0
 0075 E701              sta 1,X
 0077           L16:
 0077                   .dbline 48
 0077 E602              lda 2,X
 0079 B700              sta *__r1
 007B E601              lda 1,X
 007D B700              sta *__r0
 007F 5500              ldhx *__r0
 0081 65FBBB            cphx #-1093
 0084 95                tsx
 0085 25CF              blo L13
 0087           L15:
 0087                   .dbline 56
 0087           ;         } 
 0087           ;    //接受失败
 0087           ;    if(k>=0xfbbb) 
 0087 E602              lda 2,X
 0089 B700              sta *__r1
 008B E601              lda 1,X
 008D B700              sta *__r0
 008F 5500              ldhx *__r0
 0091 65FBBB            cphx #-1093
 0094 95                tsx
 0095 2511              blo L19
 0097                   .dbline 57
 0097           ;    {
 0097                   .dbline 58
 0097           ;         i=0xff;
 0097 A6FF              lda #-1
 0099 F7                sta ,X
 009A                   .dbline 59
 009A           ;         *p=0x01;
 009A E606              lda 6,X
 009C B700              sta *__r1
 009E E605              lda 5,X
 00A0 B700              sta *__r0
 00A2 A601              lda #1
 00A4 5500              ldhx *__r0
 00A6 F7                sta ,x
 00A7 95                tsx
 00A8                   .dbline 60
 00A8           ;    }
 00A8           L19:
 00A8                   .dbline 61
 00A8           ;    return i;
 00A8 F6                lda ,X
 00A9                   .dbline -2
 00A9           L12:
 00A9 A703              ais #3
 00AB                   .dbline 0 ; func end
 00AB 81                rts
 00AC                   .dbsym l i 0 c
 00AC                   .dbsym l k 1 i
 00AC                   .dbsym l p 5 pc
 00AC                   .dbend
 00AC                   .dbfunc e SCIReN _SCIReN fc
 00AC           ;             fp -> 0,X
 00AC           ;              m -> 1,X
 00AC           ;             ch -> 6,X
 00AC           ;              n -> 5,X
 00AC           _SCIReN::
 00AC                   .dbline -1
 00AC A7FD              ais #-3
 00AE 95                tsx
 00AF                   .dbline 69
 00AF           ; }
 00AF           ; /*SCIReN:HC08串行接收N个字节-----------------------------------------------*
 00AF           ; *功  能:接收N个字节数据,并存放在ch数组中                                   *
 00AF           ; *参  数:待接收的数据字节数及其存放的数组首地址                             *
 00AF           ; *返  回:接收标志=0 收到数据,=1 未收到数据                                  *
 00AF           ; *-------------------------------------------------------------------------*/
 00AF           ; unsigned char SCIReN(unsigned char n,unsigned char ch[])
 00AF           ; {
 00AF                   .dbline 72
 00AF           ;    int m;                  
 00AF           ;    unsigned char fp;
 00AF           ;    m=0;
 00AF 6F02              clr 2,X
 00B1 6F01              clr 1,X
 00B3 2031              bra L23
 00B5           L22:
 00B5                   .dbline 74
 00B5           ;    while (m<n)
 00B5           ;    {            
 00B5                   .dbline 75
 00B5           ;         ch[m]=SCIRe1(&fp); 
 00B5 89                pshx
 00B6 8B                pshh
 00B7 CD004D            jsr _SCIRe1
 00BA A702              ais #2
 00BC 95                tsx
 00BD B700              sta *__r1
 00BF E602              lda 2,X
 00C1 EB07              add 7,X
 00C3 B700              sta *__r3
 00C5 E601              lda 1,X
 00C7 E906              adc 6,X
 00C9 B700              sta *__r2
 00CB B600              lda *__r1
 00CD 5500              ldhx *__r2
 00CF F7                sta ,x
 00D0 95                tsx
 00D1                   .dbline 76
 00D1           ;         if (fp==1) return 1;
 00D1 F6                lda ,X
 00D2 A101              cmp #1
 00D4 2604              bne L25
 00D6                   .dbline 76
 00D6 A601              lda #1
 00D8 2022              bra L21
 00DA           L25:
 00DA                   .dbline 77
 00DA E602              lda 2,X
 00DC AB01              add #1
 00DE E702              sta 2,X
 00E0 E601              lda 1,X
 00E2 A900              adc #0
 00E4 E701              sta 1,X
 00E6                   .dbline 78
 00E6           L23:
 00E6                   .dbline 73
 00E6 3F00              clr *__r0
 00E8 E605              lda 5,X
 00EA B700              sta *__r1
 00EC E602              lda 2,X
 00EE B700              sta *__r3
 00F0 E601              lda 1,X
 00F2 B700              sta *__r2
 00F4 5500              ldhx *__r2
 00F6 7500              cphx *__r0
 00F8 95                tsx
 00F9 91BA              blt L22
 00FB                   .dbline 79
 00FB           ;         m++;
 00FB           ;    } 
 00FB           ;    return 0;   
 00FB 4F                clra
 00FC                   .dbline -2
 00FC           L21:
 00FC A703              ais #3
 00FE                   .dbline 0 ; func end
 00FE 81                rts
 00FF                   .dbsym l fp 0 c
 00FF                   .dbsym l m 1 I
 00FF                   .dbsym l ch 6 pc
 00FF                   .dbsym l n 5 c
 00FF                   .dbend

⌨️ 快捷键说明

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