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 + -
显示快捷键?