繁体中文
高级搜索
 
首页 | 电子技术应用 | 行业最新动态 | 行业最新产品 | 软件资料下载 | 电路图纸欣赏 | 博客文章精选 | 电子精品论坛 | 电子技术贴吧

当前位置:首页 >> 博客文章精选 >> PCB技术----博客 >> 串行通信接口典型应用举例
串行通信接口典型应用举例
作者:   来源: 发表时间:2006-12-31  字号:  
串行通信接口典型应用举例

SCI_FLAG .usect ".data0",1 ;SCI标志寄存器

TXD_PTR .usect ".data0",8 ;发送的数据存放区

RXD_PTR .usect ".data0",8 ;接收到的数据存放区

.include "F2407REGS.H" ;引用头部文件

.def _c_int0

;(1)建立中断向量表

.sect ".vectors" ;定义主向量段

RSVECT B _c_int0 ;PM 0 复位向量 1

INT1 B GISR1 ;PM 2 中断优先级1 4

INT2 B PHANTOM ;PM 4 中断优先级2 5

INT3 B PHANTOM ;PM 6 中断优先级3 6

INT4 B PHANTOM ;PM 8 中断优先级4 7

INT5 B PHANTOM ;PM A 中断优先级5 8

INT6 B PHANTOM ;PM C 中断优先级6 9

RESERVED B PHANTOM ;PM E (保留位) 10

SW_INT8 B PHANTOM ;PM 10 用户定义软件中断 —

SW_INT31 B PHANTOM ;PM 3E 用户定义软件中断 —

;中断子向量入口定义pvecs

.sect ".pvecs" ;定义子向量段

PVECTORS B PHANTOM ;保留向量地址偏移量0000h

B PHANTOM ;保留向量地址偏移量0001h

B PHANTOM ;保留向量地址偏移量0005h

B SCI_RX_ISR ;保留向量地址偏移量0006h SCI接收中断

B PHANTOM ;保留向量地址偏移量0007h

B PHANTOM ;保留向量地址偏移量0041h

;(2)主程序:

.text

_c_int0

SETC INTM

CLRC SXM

CLRC OVM

CLRC CNF

LDP #0E0H

SPLK #81FEH,SCSR1 ;CLKIN=6 M,CLKOUT=24 M

SPLK #0E8h,WDCR ;关看门狗

CALL SCI_INIT ;调串口初始化程序

LDP #5H

SPLK #00H,SCI_FLAG ;清发送软件标志位

TXD_LOOP:

LDP #5H

BIT SCI_FLAG,BIT0

BCND TXD_DATA,TC ;SCI_FLAG.0=1则发送数据

B WAIT

TXD_DATA: ;发送N个数据程序

MAR *,AR0

LAR AR0,#TXD_PTR

ADRK #N 1 ;发送N个数据

MAR *,AR4

LACC * ;读数据

CMPR 00

BCND TXD_DATA_END,TC ;判数据发送完?

MAR *,AR2

SACL *,AR4 ;数据送SCITXBUF寄存器

XMIT_RDY:

LDP #DP_PF1

BIT SCICTL2,BIT7

BCND XMIT_RDY,NTC ;判发送器是否空?

B TXD_DATA

TXD_DATA_END:

MAR *, AR4

LAR AR4,#TXD_PTR ;恢复发送的数据指针

LDP #5H

SPLK #00H,SCI_FLAG ;清发送软件标志位

WAIT: NOP

B TXD_LOOP

(3)串行通信初始化程序:

SCI_INIT:

LDP #0E1H

LACL MCRA

 or  #03H

SACL MCRA ;配置串行口引脚为特殊功能:TXD、RXD

LDP #DP_PF1

SPLK #000FH,SCICCR ;地址位唤醒模式,8位数据,

;1位停止位,无奇偶校验

SPLK #0007H,SCICTL1 ;接收、发送、内部时钟使能 ,SLEEP=1

SPLK #0002H,SCICTL2 ;接收中断使能

SPLK #0001H,SCIHBAUD

SPLK #0038H,SCILBAUD ;波特率为9600

SPLK #0027H,SCICTL1 ;串口初始化完成

LAR AR1,#SCIRXBUF ;接收缓冲寄存器地址

LAR AR2,#SCITXBUF ;发送缓冲寄存器地址

LAR AR3,#RXD_PTR ;接收的数据指针

LAR AR4,#TXD_PTR ;发送的数据指针

LDP #0

SPLK #0001h,IMR ;允许INT1中断

SPLK #0FFFFh,IFR ;清所有中断标志

CLRC INTM ;开总中断

RET

(4)中断程序

GISR1: ;优先级INT1中断人口

;保护现场

LDP #0E0H

LACC PIVR,1 ;读取外设中断向量寄存器(PIVR),并左移一位

ADD #PVECTORS ;加上外设中断人口地址

BACC ;跳到相应的中断服务子程序

SCI_RX_ISR: ;接收中断服务程序

LDP #DP_PF1

MAR *,AR1

BIT SCICTL1,BIT2

BCND RXD_DATA,NTC ;SLEEP=0,接收数据

LACC * ;读入地址

SUB #0AAH

BCND TXD_FLAG,EQ ;接收到的地址为AAH,则发送数据

SUB #0001H

BCND SCI_RX_END,NEQ ;地址错误,退出中断

SPLK #0033H,SCICTL1 ;地址为ABH,则清SLEEP=0

;表示准备接收数据

B SCI_RX_END

TXD_FLAG: ;置发送标志

LDP #5H

SPLK #01H,SCI_FLAG

B SCI_RX_END

RXD_DATA: ;接收N个数据

LACC *,AR3 ;读入数据

SACL * ,AR0 ;保存数据

LAR AR0,#RXD_PTR

ADRK #N

MAR *,AR3

CMPR 00

BCND SCI_RX_END,NTC ;判是否接收完

LAR AR3,#RX_PTR ;恢复接收的数据指针

SPLK #0037H,SCICTL1 ;置SLEEP=1表示准备接收地址

SCI_RX_END: ;中断返回

;恢复现场

CLRC INTM ;开总中断,因为一进中断就

;自动关闭总中断

RET

(5)假中断程序

PHANTOM

KICK_DOG ;复位看门狗

RET

END


!注意:如果您发现此文章出现影响您的阅读的状况,请从浏览器地址栏里复制本文的链接到留言本报告给站长解决!
  • 上一篇: tms320vc33的原理图.pdf
  • 下一篇: IBM采用自成形材料绝缘 芯片提速三分之一

  • >> 联系我们请给我们留言·留言本
    本站所有提供的信息软件资料均来自网络,版权及著作权归原作者所有,如果无意中侵犯了您的相关权利或触及法律法规,请给我们留言, 我们将在24小时内删除。
      浙ICP备05071687号  电子技术精品网