📄 vk.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 + -