我用单片机进行外部中断计数,给他1HZ的脉冲,但是显示的计数值有时候间隔1,的有时候间隔5-10,(这个12864刷屏时间应该是1-2S之间,因为时间芯片pcf8563的时间能够在屏上连续读出)这是程序原因还是电路板的原因?我有点怀疑是我的程序问题,因为我的显示函数是放在主函数里面在的whle(1)里的,里面可能有些程序执行时间,但是我又有点怀疑不是这个原因,理由有以后两个: 1、我用的单片机是C8051F120,它接数字外设时,端口的耐压值为5V,但是我在用外部中断计数的时候,用的是幅度为10V的方波,不知道是不是因为这个原因导致外部中断端口出问题了,但是当时我用这个10V的方波测了一天的数据,当时候能够加1递增,没有出过问题呀;2、使用以前显示能够外部计数加1的那个程序做测试,出现相同的不能加1的现象,如果说我的程序的原因,那为什么这个程序以前可以加1现在又不可以加1呢?
[ 本帖最后由 jiangjieqazwsx 于 2011-12-26 20:20 编辑 ]
利用外部中断设计一个数字抽奖机应该就不错了
QQ:1564006173
那谁知道啊,没有程序也没有电路图的。
有可能是信号传输过程中有干扰信号。
代码太多,不知道用贴哪段代码了
//----------------------------------------------------------------------
//函数名称: INT0_Init(void)
//函数功能: 配置外部中断0和外部中断1
//入口参数: 无
//出口参数: 无
//全局变量引用: 无
//调用模块: 无
//----------------------------------------------------------------------
void INT0_Init(void) //外部中断也可以用来计数
{
char SFRPAGE_SAVE = SFRPAGE;
SFRPAGE = TIMER01_PAGE;
TCON|=0x05; // INTO为边沿触发,即下跳沿触发
// EX0=1;
// EX1=1;
SFRPAGE = SFRPAGE_SAVE;
}
//----------------------------------------------------------------------
//函数名称: void INT0_ISR() interrupt 0
//函数功能: 外部中断0中断函数
//入口参数: 无
//出口参数: 无
//全局变量引用: 无
//调用模块: 无
//----------------------------------------------------------------------
void INT0_ISR() interrupt 0 //外部中断控制安全
{
extra_n0++;
}
void INT1_ISR() interrupt 2 //外部中断控制安全
{
extra_n1++;
}
问题找到了,今天跟老师查了一天的原因,从端口的配置,到定时器的配置,再到仪器,最后发现是自己的信号发生器有问题,是学校给的信号发生器的问题,你们可能无法想象我们现在用的仪器是多么的古老,哎,学样穷呀,真是纠结了我这么多天,还以为是自己把端口烧了