计算机和单片机通过RS-232C通信,RS-232接口实现计算机和单片机通信程序

//此程序通过RS-232接口来完成计算机和单片机通信(程序已用p18f458试验板上调试通过)

//程序的调试可以用"串口调试助手V2.1"辅助完成,此程序可在http://www.51hei.com 下载

//此程序首先发送测试数据55H,再通过中断实现数据的接收和发送

#include "p18f458.h"

void InterruptHandlerHigh(void);

//初始化程序

void initial()

{

SPBRG=0X19;    //选择传输波特率为9600bps

TXSTA=0X04;    //选择异步高速方式传输8位数据

RCSTA=0X80;    //允许同步串行口工作

TRISC=0X80;    //将RC7,RC6设置为输入,断绝与外接电路的连接

TXSTAbits.TXEN=1;   //发送允许

RCSTAbits.CREN=1;   //接受数据允许

PIE1bits.RCIE=1;   //接收中断使能

INTCON=0XC0;   //总中断和外围中断允许

}

//高优先级中断向量

#pragma code InterruptVectorHigh=0x08

void InterruptVectorHigh (void)

{

_asm

goto InterruptHandlerHigh   //跳到中断程

_endasm

}

//高优先级中断服务程序

#pragma code

#pragma interrupt InterruptHandlerHigh

void InterruptHandlerHigh ()

{

while(PIR1bits.RCIF==1)  //若接收中断标志不为1,则为误操作,返回

{

TXREG=RCREG;  //将接收到的数据放入发送寄存器,并启动发送

}

}

//主程序

main()

{

initial();     //系统初始化

TXREG=0X55;    //发送数据55H进行测试

for(;;);

}

------------------------------------------汇编语言版本的RS-232接口实现计算机和单片机通信程序------------

;此程序通过RS-232接口来完成计算机和单片机通讯(程序以在p18f458试验板上调通)

;本单片机程序由http://www.51hei.com提供

;此程序首先发送测试数据55H,再通过中断实现数据的接收和发送

;程序的调试可以用"串口调试助手V2.1"辅助完成

LIST     P=18f458

INCLUDE    "P18f458.INC"

ORG  0x00

GOTO MAIN

ORG  0x08

GOTO INTSERVE

ORG  0X30

;**************中断服务子程序***************

INTSERVE

BTFSS PIR1,RCIF  ;接收中断标志为1?

GOTO ERR_RE   ;误操作,返回

MOVF RCREG,0   ;否则,将接收到的数据通过W寄存器

MOVWF TXREG    ;放入发送寄存器,并启动发送

ERR_RE NOP

RETFIE

;****************初始化程序***************

INITIAL NOP

MOVLW  0X19   ;选择传输波特率为9600bps

MOVWF  SPBRG

MOVLW  0X04   ;选择异步高速方式传输8位数据

MOVWF  TXSTA

MOVLW  0X80   ;允许同步串行口工作

MOVWF  RCSTA

MOVLW  0X80   ;将RC7,RC6设置为输入,断绝与外接电路的连接

MOVWF  TRISC

BSF  TXSTA,TXEN  ;发送允许

BSF  RCSTA,CREN  ;接受数据允许

BSF      PIE1,RCIE  ;接收中断使能

MOVLW  0XC0   ;总中断和外围中断允许

MOVWF  INTCON

RETURN

;**********************主程序*********************

MAIN     NOP

CLRWDT

CALL  INITIAL

MOVLW  0X55   ;发送数据55H进行测试

MOVWF  TXREG

LOOP

GOTO  LOOP

END

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值