在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
芯片精品文章合集(500篇!) 创芯人才网--重磅上线啦!
查看: 2900|回复: 0

一个T/c0计数的程序 出了点意外 请大家看看

[复制链接]
发表于 2007-4-27 20:20:38 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
//这是MEGA8芯片的T/c0计数程序,出了点问题,请大家看看
//因为我不懂protel所有没有法把我的板子情况发出来 所以大家只能看下我下面对我板子的介绍
#include<iom8v.h>
#define uchar unsigned char
#define uint unsigned int
uchar  table[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//数码管字形表
uchar data[4]={0,0,0,0};//显示初始值
void process(uchar i,uchar *p){//计数值处理程序将计数组拆分为BCD码长的千百十个们数据用于查表显示
p[0]=i/1000;
i=i%100;
p[1]=i/100;
i=i%100;
p[2]=i/10;
i=i%10;
p[3]=i;
}
void  delayms(uint i){//延时
uint j;
for(;i!=0;i--){
for(j=8000;j!=0;j--);}
}
  
void display(uchar *p){//显示
int i,sel=0xef;//选位
for(i=3;i>-1;i--){//i不能为char因为要与-1比较
PORTD=sel;
PORTB=table[p];
delayms(10);
sel=sel<<1;
}
}
//我用的是mega8,其中PD4-PD7用于选位。T0与PD4同端口,B端接数码管
//程序开始运行的时候先是输出0000,但接下来并无数据输入,可数码管却显示为0001,
//在此之后如果向t0口每输入一个信号(按一下键盘),计数值加1
//所以问题就在于开始的时候为什么会在没有输入的情况下从0000变到0001
int main(void){
DDRD=0x00;//初始化
PORTD=0X00;//
DDRB=0xff;//
TCCR0=0X06;//T、C0工作于下降沿计数
TCNT0=0;//计数初始值为0
while(1){
process(TCNT0,data);//计数值处理
DDRD=0XFF;//将D口设置为输出,显示数值
display(data);
DDRD=0X00;//将D口设置为输入,用来接收按键产生的脉冲
}
return 0;
}
请各位帮忙解答一下 谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-12-23 20:59 , Processed in 0.018057 second(s), 8 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表