📄 main.c
字号:
//-----------------------------------------------------------------
// 名称: PC机与单片机双向串口通讯仿真
//-----------------------------------------------------------------
// 说明: 单片机可接收并显示PC机发送的数字字符
// 按下单片机K1按键时,单片机可向PC机发送字符串
//
// 在PROTEUS环境下完成本实验时,需要先安装:
// 1. Virtual Serial Port Driver
// 2. 串口调试助手软件.
// 建议在VSPD中将COM3和COM4设为对联端口.
// PROTEUS中设COMPIM为COM4,在串口助手中选择COM3
// 然后再进行单片机程序与PC机串口助手软件的双向通讯实验.
//
//-----------------------------------------------------------------
#include <pic.h>
#define INT8U unsigned char
#define INT16U unsigned int
#define _XTAL_FREQ 4000000UL //4M晶振
//按键定义
#define Key_DOWN() (RA5 == 0)
//共阴数码管0~9的段码表,最后一位为黑屏
const INT8U DSY_CODE[] =
{0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x00};
//保存接收到的四位数字(初始时为全部黑屏)
INT8U R[] = {10,10,10,10};
//-----------------------------------------------------------------
// 串口初始化
//-----------------------------------------------------------------
void Serial_port_init()
{
}
//------------------------------------------------------------------
// 显示所接收的数字字符(数字字符由PC串口发送,PIC单片机串口接收)
//------------------------------------------------------------------
void Show_Received_Digits()
{
}
//------------------------------------------------------------------
// 按下K1时PC机发送字符串
//------------------------------------------------------------------
void Send_String()
{
INT8U i = 0;
//"HELLO!"
//"这是由PIC单片机发送的字符串!!!"
//由于PICC不允许使用中文字符串,故用UltraEdit取该文字串内码再发送
//00000000h: 48 45 4C 4C 4F 21 0D 0A D5 E2 CA C7 D3 C9 50 49
//00000010h: 43 B5 A5 C6 AC BB FA B7 A2 CB CD B5 C4 D7 D6 B7
//00000020h: FB B4 AE 21 21 21 0D 0A
//其中英文字符与标点符号可使用ASCII码,也可直接使用字符.
char s[] = { 'H','E','L','L','O','!','\r','\n',
0xD5,0xE2,0xCA,0xC7,0xD3,0xC9,'P','I','C',
0xB5,0xA5,0xC6,0xAC,0xBB,0xFA,0xB7,0xA2,
0xCB,0xCD,0xB5,0xC4,0xD7,0xD6,0xB7,0xFB,
0xB4,0xAE,'!', '!', '!', '\r','\n','\0'};
while (s[i])
{
}
}
//-----------------------------------------------------------------
// 主程序
//-----------------------------------------------------------------
void main()
{
ADCON1 = 6; //RA端口设为数字端口
TRISA5 = 1; //RA5按键输入
PORTB = TRISB = 0x00; //设置数码管输出端口
TRISC &= 0xF0; //RC端口低四位输出数码管位码
while (1)
{
}
}
//------------------------------------------------------------------
// 串口接收中断程序(缓冲满时数据前移)
//------------------------------------------------------------------
void interrupt Serial_Port_Recv_ISR()
{
static INT8U i = 0; INT8U c, k;
if(RCIE && RCIF)
{
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -