本帖最后由 liangheron 于 2016-10-12 15:28 编辑
申请的板子,收到了,包装很赞。兴奋的写好了程序,装了驱动程序,能检测到串口,串口是com3,结果 2016-10-12 14:32:10 通讯错误,请检查连接并重试!是哪里原因呢,弄了半天也没弄好。
下面是写的测试程序,测试定时器和io口,每一秒led2切换一次,一分钟led3,一小时led4,谁有空测试一下
/****************************************************************************************
*
* 文件名: main.c
* 项目名: myTest
* 版 本: v1.0
* 日 期: 2016年10月12日 12时43分23秒
* 作 者: 飞雪吹云
*
****************************************************************************************/
#include<KF8V216.h>
#define LED2 P0LR0 //秒闪烁标志
#define LED3 P0LR1//分闪烁标志
#define LED4 P0LR2//小时闪烁标志
unsigned char Scnt, Mcnt, Hcnt; //秒计时,分计时,小时计时
/**********************全局变量结束*************************/
/************************
* 函数名 :Delay_200us
* 函数功能:短时间延时
* 入口参数:无
* 返回 :无
************************/
void Delay_200us()
{
unsigned char i = 60;
while(--i);
}
void Init_fun(void)
{
OSCCTL = 0x60; // 设置为8M
/*****端口初始化********/
TR0 = 0x08; //设置P03端口为输入
TR1 = 0x00; //设置P1端口为输出
P0LR = 0;
P1LR = 0;
P0 = 0;
P1 = 0;
/****初始化定时器0*****/
OPTR = 0x05; //定时器0,分频为1:64,现在晶振为8M,一条指令为0.5us(1/(8M/4)=0.5us ),则经过32us,计数1
T0 = 0x64; //设定定时5MS, 0X64=100D 即计数156后为256溢出产生中断,而156*32=4992 约为5000us=5ms
INTCTL = 0XA0; //清T0的标志位 T0IF=0 T0的使能位T0IE = 1 总中断AIE = 1
PCTL = 0X00; //禁止中断优先级 IPEN = 0
}
void main()
{
unsigned char i;
Init_fun(); //初始化
AIE=1;
while(1)
{
}
}
//中断函数0:0X04入口地址
void int_fun0() __interrupt (0)
{
if(T0IF)
{
T0IF = 0; //清零中断标志
T0 = 0x64; //T0重新赋值
if(Scnt++ >= 200) //判断是否达到1s记时 5ms*200 = 1s
{
LED2=!LED2; //清零计数器
Scnt=0; //个位相加
if(Mcnt++>= 60)
{
Mcnt = 0;
LED3=!LED3;
if(Hcnt++>= 60)
{
Hcnt = 0;
LED4=!LED4;
}
}
}
}
}
//中断函数1:0x14入口地址
void int_fun1() __interrupt (1)
{
}
|