?? 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);
}
/*************************************************
使能子串口發(fā)送觸點(diǎn)中斷
*************************************************/
void EnVkSs(uchar port) {
write_reg(port, SIER, 0X03);
//write_reg(port, GIER, 0X10);
}
/*************************************************
禁止子串口發(fā)送觸點(diǎn)中斷
*************************************************/
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);
//設(shè)置字串口數(shù)據(jù)格式,8位數(shù)據(jù) 1位停止 無奇偶校驗(yàn)
write_reg(0, SCONR, 0X00);
write_reg(1, SCONR, 0X00);
//
write_reg(0, SFWCR, 0X0C);
//設(shè)置fifo發(fā)送接收觸點(diǎn),清空fifo
write_reg(1, SFOCR, 0X0F);
write_reg(0, SFOCR, 0X0C);
write_reg(1, SFOCR, 0X0C);
//查看發(fā)送接收FIFO中是否有數(shù)據(jù),如果有則把FIFO中的數(shù)據(jù)讀出來,
//使發(fā)送接收FIFO中的數(shù)據(jù)為0
while(read_reg(0,SFSR))
read_reg(0,SFDR);
//設(shè)置全局中斷,使能字串口0,1中斷
write_reg(GLOBAL, GIER, 0X30);
//設(shè)置子串口中斷,使能fifo接收觸點(diǎn)中斷
write_reg(0, SIER, 0X01);
write_reg(1, SIER, 0X01);
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -