单片机 霍尔传感器测速 哪里出了问题啊 ??

[复制链接]
查看11 | 回复2 | 2011-6-14 13:18:44 | 显示全部楼层 |阅读模式
用定时计数器0和定时计数器1 程序如下,仿真已经通过了,但是硬件就是不成,你帮我看看呗 程序如下:
#include
#define uchar unsigned char
#define uint unsigned int
sbit led1=P1^7;
sbit led2=P1^6;
sbit led3=P1^5;
sbit led4=P1^4;
uint mm;
uchar code table[]={0xc0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
void delay(uint m)
{ uint i,j;
for(i=m;i>0;i--)

for(j=60;j>0;j--);
}
void xian_shi()
{
uchar qian,bei,shi,ge;
uint jj;
jj=mm;
jj*=20;//定时0.05s,jj/0.05=jj*20 (jj是转数)

qian=jj/1000;
bei=jj%1000/100;
shi=jj%100/10;
ge=jj%10;
led1=1;
P0=table[qian];
delay(1);
led1=0;
led2=1;
P0=table[bei];
delay(1);
led2=0;
led3=1;
P0=table[shi];
delay(1);
led3=0;
led4=1;
P0=table[ge];
delay(1);
led4=0;
}
void timer_init() //定时器计数器初始化函数
{
EA=1;
ET0=1;
ET1=1;
TMOD=0X51;
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
TH1=0;
TL1=0;
TR0=1;
TR1=1;
}
void main()
{
timer_init();
P0=0; //开始数码管不显示
while(1)
{

xian_shi();

delay(2); //数码管刷新时间单位毫秒
}
}
void timer0() interrupt 1
{
TR0=0;
TR1=0;
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
mm=0;
mm|=TH1;
mm=(mm<<8)|TL1;

TH1=0;
TL1=0;
TR0=1;
TR1=1;
}
void timer1() interrupt 3 //显示0000 说明出错
{
TR1=0;
TR0=0;
mm=0;
TH1=0;
TL1=0;
TR1=1;
}

回复

使用道具 举报

千问 | 2011-6-14 13:18:44 | 显示全部楼层
显示程序有问题,显示是带参显示的,void xianshi(uint mm),这样定义才对,然后你显示程序为啥还要加个jj呢?直接mm就可以了。void xianshi(),你的显示不带参数,mm参数无法传递。...
回复

使用道具 举报

千问 | 2011-6-14 13:18:44 | 显示全部楼层
程序能这样直接灌到硬件里面去吗?生成hex文件后,仿真试的吗...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行