打印
[AVR单片机]

菜鸟真心求指导。

[复制链接]
1035|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
studying123|  楼主 | 2012-11-25 11:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include <iom16v.h>
#include <macros.h>
#define uchar unsigned char
#define uint unsigned int
uchar num;
#pragma interrupt_handler miao:9
#pragma data:code
const table[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,
0x5E,0x79,0x71};

void delay(uint ms)
{
uint i,j;
for (i=0;i<ms;i++)
for (j=0;j<1141;j++);
}


void show(uchar j,uchar k)

{
PORTA=table[k];
delay(10);
PORTC=table[j];
delay(10);
}


void miao (void)
{
uchar a,b;
TCNT1H=0X85;
TCNT1L=0XED;
a=num%10;
b=num/10;
show(a,b);

}

void main(void)
{
uint pre=0,cur=0;
uchar j=0,k=0;
DDRD=0x00;
DDRA=0xff;
DDRC=0xff;
TCCR1B=0X04;
TCNT1H=0X85;
TCNT1L=0XED;
TIMSK|=BIT(2);
SREG|=BIT(7);
show(j,k);
delay(10);
while(1)
{
cur = PIND&0x01;
if(pre&(cur^pre)) num++;
delay(1);
pre=cur;
}
}




这样一个程序,用JTAG口仿真时,为什么数码管连接PA口的那个可以正常显示,连接PC口的那个却显示不正常。(实现的功能是计脉冲,PA口显示10位,PC口显示个位。)

相关帖子

沙发
NE5532| | 2012-11-25 15:13 | 只看该作者
不要用这么复杂的代码找问题,就用这一句

pc = 0xAA;

来找。

使用特权

评论回复
板凳
studying123|  楼主 | 2012-11-26 17:29 | 只看该作者
原来是受JTAG仿真口的影响,把PC口的电路挪到PD口就正常了。

使用特权

评论回复
地板
NE5532| | 2012-11-26 19:30 | 只看该作者
呵呵,恭喜找到原因。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

18

帖子

0

粉丝