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

📄 vk.c

📁 51单片机串口只有一个
💻 C
字号:

#include "vk.h"

uchar code BoudTbl[3] = {0x58, 0x48, 0xA8};

/********************************************
使能字串口
********************************************/
void EnVkS(uchar port) {
//	write_reg(port, SIER, 0X01);
	if(port == GPRSPORT)
		write_reg(port, SCTLR, 0XA8);
	if(port == GPSPORT)
		write_reg(port, SCTLR, 0X48);
}

/********************************************
禁止子串口
********************************************/
void DsVkS(uchar port) {
//	write_reg(port, SIER, 0X00);
	if(port == GPRSPORT)
		write_reg(port, SCTLR, 0XA0);
	if(port == GPSPORT)
		write_reg(port, SCTLR, 0X40);
}

/*************************************************
使能子串口发送触点中断
*************************************************/
void EnVkSs(uchar port) {
	write_reg(port, SIER, 0X03);
	//write_reg(port, GIER, 0X10);
}

/*************************************************
禁止子串口发送触点中断
*************************************************/
void DsVkSs(unsigned char port) {
	write_reg(port, SIER, 0X01);
	//write_reg(port, GIER, 0X00);
}

void SetVkBoud(uchar port, uchar n) {	
	write_reg(port, SCTLR, BoudTbl[n]);
}

/************************************************
初始化vk
************************************************/
void init_vk(void) {
	write_reg(GLOBAL, GCR, 0X01);



	//设置字串口数据格式,8位数据 1位停止 无奇偶校验
	write_reg(0, SCONR, 0X00);
	write_reg(1, SCONR, 0X00);

	//
	write_reg(0, SFWCR, 0X0C);

	//设置fifo发送接收触点,清空fifo

	write_reg(1, SFOCR, 0X0F);
	write_reg(0, SFOCR, 0X0C);
	write_reg(1, SFOCR, 0X0C);

	//查看发送接收FIFO中是否有数据,如果有则把FIFO中的数据读出来,
	//使发送接收FIFO中的数据为0
	while(read_reg(0,SFSR))
		read_reg(0,SFDR);


	//设置全局中断,使能字串口0,1中断
	write_reg(GLOBAL, GIER, 0X30);
	
	//设置子串口中断,使能fifo接收触点中断
	write_reg(0, SIER, 0X01);
	write_reg(1, SIER, 0X01);
}

⌨️ 快捷键说明

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