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

📄 sci.s

📁 项目是为日本瑞萨工作所做的BAKE炉温控系统 整个文件夹包括设计文档
💻 S
字号:
	.module SCI.c
	.area text
	.dbfile SCI.c
	.dbfunc e SCIInit _SCIInit fV
_SCIInit::
	.dbline -1
	.dbline 22
; //[H08SCI.c]串行通信-------------------------------------------------------*
; //本文件包含:                                                              *  
; //(1)SCIInit:串行口初始化                                                  *
; //(2)SCISend1:串行发送1个字节                                              *
; //(3)SCISendN:串行发送n字节                                                *
; //(4)SCIRe1:串行接收1字节                                                  *
; //(5)SCIReN:串行接收n字节                                                  *
; //硬件连接:                                                                *
; //    MCU的SCI模块接口与PC方的COM1相连                                     *
; //-------------------------------------------------------------------------*
; 
; //头文件
; #include "SCI.h"
; 
; //SCIInit:串行口初始化-----------------------------------------------------*
; //功 能:对串行口进行初始化,默认为允许SCI,正常码输出,8位数据,无校验,        *
; //      允许发送器,允许接收器.查询方式收发,波特率为9600(设fBUS=2.4576MHz) *                                       
; //参 数:无                                                                 *
; //返 回:无                                                                 *
; //-------------------------------------------------------------------------*
; void SCIInit(void)
; {   //1.总线频率fBUS=2.4576MHz,定义波特率Bt=9600
	.dbline 23
;     SCBR=0b00000010;
	lda #2
	sta 0x19
	.dbline 25
;     //2.设置允许SCI,正常码输出、8位数据、无校验
;     SCC1=0b01000000; 
	lda #64
	sta 0x13
	.dbline 27
;     //3.设置允许发送、允许接收,查询方式收发     
;     SCC2=0b00001100; 
	lda #12
	sta 0x14
	.dbline -2
L1:
	.dbline 0 ; func end
	rts
	.dbend
	.dbfunc e SCISend1 _SCISend1 fV
;              o -> 2,X
_SCISend1::
	.dbline -1
	tsx
	.dbline 36
; }
; 
; //SCISend1:串行发送1个字节-------------------------------------------------*
; //功  能:串行发送1个字节                                                   *
; //参  数:要发送的数据                                                      *
; //返  回:无                                                                *
; //-------------------------------------------------------------------------*
; void SCISend1(INT8U o)
; {
	bra L4
L3:
	.dbline 39
;    //判断ReStatusR的第SendTestBit位是否为1,是1可以发送
;    while(1)	
;       if ((ReSendStatusR & (1<<SendTestBit)) != 0)
	brclr #7,0x16,L6
	.dbline 40
;       {
	.dbline 41
;       	ReSendDataR=o;
	lda 2,X
	sta 0x18
	.dbline 42
;       	break;
	bra L5
L6:
L4:
	.dbline 38
	bra L3
L5:
	.dbline -2
L2:
	.dbline 0 ; func end
	rts
	.dbsym l o 2 c
	.dbend
	.dbfunc e SCISendN _SCISendN fV
;              i -> 0,X
;             ch -> 5,X
;              n -> 4,X
_SCISendN::
	.dbline -1
	ais #-2
	tsx
	.dbline 52
;       }
; }
; 
; //SCISendN:串行发送N个字节-------------------------------------------------*
; //功  能:发送数组中的N个字节数据                                           *
; //参  数:待发送数据的字节数及存放这些数据的数组首地址                      *          
; //返  回:无                                                                *
; //-------------------------------------------------------------------------*
; void SCISendN(INT8U n,INT8U ch[])
; {
	.dbline 54
;   int i;
;   for(i=0;i<n;i++)          
	clr 1,X
	clr ,X
	bra L12
L9:
	.dbline 55
	lda 1,X
	add 6,X
	sta *__r1
	lda ,X
	adc 5,X
	sta *__r0
	ldhx *__r0
	lda ,x
	psha
	jsr _SCISend1
	ais #1
	tsx
L10:
	.dbline 54
	lda 1,X
	add #1
	sta 1,X
	lda ,X
	adc #0
	sta ,X
L12:
	.dbline 54
	clr *__r0
	lda 4,X
	sta *__r1
	lda 1,X
	sta *__r3
	lda ,X
	sta *__r2
	ldhx *__r2
	cphx *__r0
	tsx
	blt L9
	.dbline -2
L8:
	ais #2
	.dbline 0 ; func end
	rts
	.dbsym l i 0 I
	.dbsym l ch 5 pc
	.dbsym l n 4 c
	.dbend
	.dbfunc e SCIRe1 _SCIRe1 fc
;              i -> 0,X
;              k -> 1,X
;              p -> 5,X
_SCIRe1::
	.dbline -1
	ais #-3
	tsx
	.dbline 65
;   	SCISend1(ch[i]);
; }
; 
; //SCIRe1:串行收一个字节数据------------------------------------------------*
; //功  能:从串行口接收1个字节的数据                                         *
; //参  数:标志指针p                                                         *
; //返  回:接收到的数据(若接收失败,返回0xff)                              * 
; //说  明:参数*p带回接收标志.*p=0,收到数据;*p=1,未收到数据                  *
; //-------------------------------------------------------------------------*
; INT8U SCIRe1(INT8U *p)
; {  
	.dbline 69
;    INT16U k;
;    INT8U  i;
;    //ReStatusR第ReTestBit位为1表示可接收数据
;    for(k=0;k<0xfbbb;k++)
	clr 2,X
	clr 1,X
	bra L17
L14:
	.dbline 70
; 	  if ((ReSendStatusR & (1<<ReTestBit)) != 0)
	brclr #5,0x16,L18
	.dbline 71
; 	  {
	.dbline 72
; 	      i=ReSendDataR;
	lda 0x18
	sta ,X
	.dbline 73
; 	      *p=0x00; 
	lda 6,X
	sta *__r1
	lda 5,X
	sta *__r0
	clra
	ldhx *__r0
	sta ,x
	tsx
	.dbline 74
; 	      break;
	bra L16
L18:
L15:
	.dbline 69
	lda 2,X
	add #1
	sta 2,X
	lda 1,X
	adc #0
	sta 1,X
L17:
	.dbline 69
	lda 2,X
	sta *__r1
	lda 1,X
	sta *__r0
	ldhx *__r0
	cphx #-1093
	tsx
	blo L14
L16:
	.dbline 77
; 	  } 
;    //接受失败
;    if(k>=0xfbbb) 
	lda 2,X
	sta *__r1
	lda 1,X
	sta *__r0
	ldhx *__r0
	cphx #-1093
	tsx
	blo L20
	.dbline 78
;    {
	.dbline 79
; 	  i=0xff;
	lda #-1
	sta ,X
	.dbline 80
; 	  *p=0x01;
	lda 6,X
	sta *__r1
	lda 5,X
	sta *__r0
	lda #1
	ldhx *__r0
	sta ,x
	tsx
	.dbline 81
;    }
L20:
	.dbline 82
;    return i;
	lda ,X
	.dbline -2
L13:
	ais #3
	.dbline 0 ; func end
	rts
	.dbsym l i 0 c
	.dbsym l k 1 i
	.dbsym l p 5 pc
	.dbend
	.dbfunc e SCIReN _SCIReN fc
;             fp -> 0,X
;              m -> 1,X
;             ch -> 6,X
;              n -> 5,X
_SCIReN::
	.dbline -1
	ais #-3
	tsx
	.dbline 91
; }
; 
; //SCIReN:HC08串行接收N个字节-----------------------------------------------*
; //功  能:接收N个字节数据,并存放在ch数组中                                  *
; //参  数:待接收的数据字节数及其存放的数组首地址                            *
; //返  回:接收标志=0 收到数据,=1 未收到数据                                 *
; //-------------------------------------------------------------------------*
; INT8U SCIReN(INT8U n,INT8U ch[])
; {
	.dbline 94
;    int m;                  
;    INT8U fp;
;    m=0;
	clr 2,X
	clr 1,X
	bra L24
L23:
	.dbline 96
;    while (m<n)
;    { 	          
	.dbline 97
; 	  ch[m]=SCIRe1(&fp); 
	pshx
	pshh
	jsr _SCIRe1
	ais #2
	tsx
	sta *__r1
	lda 2,X
	add 7,X
	sta *__r3
	lda 1,X
	adc 6,X
	sta *__r2
	lda *__r1
	ldhx *__r2
	sta ,x
	tsx
	.dbline 98
; 	  if (fp==1) return 1;
	lda ,X
	cmp #1
	bne L26
	.dbline 98
	lda #1
	bra L22
L26:
	.dbline 99
	lda 2,X
	add #1
	sta 2,X
	lda 1,X
	adc #0
	sta 1,X
	.dbline 100
L24:
	.dbline 95
	clr *__r0
	lda 5,X
	sta *__r1
	lda 2,X
	sta *__r3
	lda 1,X
	sta *__r2
	ldhx *__r2
	cphx *__r0
	tsx
	blt L23
	.dbline 101
; 	  m++;
;    } 
;    return 0;	 
	clra
	.dbline -2
L22:
	ais #3
	.dbline 0 ; func end
	rts
	.dbsym l fp 0 c
	.dbsym l m 1 I
	.dbsym l ch 6 pc
	.dbsym l n 5 c
	.dbend

⌨️ 快捷键说明

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