|
我想用单片机本身输出PWM波,再测频,可是两个分开用都好用,和在一起就不行了,我想可能是计时器的问题,但不知道怎么做,求大神指点!我是新手。
#define uchar unsigned char
#define uint unsigned int
int num=0,e=0,r=0;
#include <iom16v.h>
#include <macros.h>
#pragma interrupt_handler chi:3
#pragma interrupt_handler miao:9
uchar discode[10]={ 0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90 };//段码表
uchar disbit[4]={ 0xFE,0xFD,0xFB,0xF7}; //选通值
delayms(ms)
{
uint i,j;
for(i=0;i<ms;i++)
for(j=0;j<1141;j++);
}
void chi()
{
if(r==1)
{
num=0;
r=0;
}
num++;
}
void miao()
{
e=num/5;
r=1;
TCNT1H=0x0B;
TCNT1L=0xDC;
}
void PWM()
{
DDRB=0XFF;
PORTB=0XFF;
TCCR0=0X18;
OCR0=99;
}
void main()
{
DDRA=0xFF; //设为输出口
DDRB=0xFF; //设为输出口
PORTA=0xFF;
PORTB=0xFF;
MCUCR|=0X0D;
GICR|=0X80;
TCNT1H=0x0B;
TCNT1L=0xDC;
TCCR1B=0X1B;
TIMSK|=BIT(2);
SREG|=BIT(7);
while(1)
{
PWM();
PORTB=discode[e%10];
PORTA=disbit[3];
PORTB=discode[e%100/10];
PORTA=disbit[2];
PORTB=discode[e%1000/100];
PORTA=disbit[1];
PORTB=discode[e%10000/1000];
PORTA=disbit[0];
}
}
|
阿莫论坛20周年了!感谢大家的支持与爱护!!
你熬了10碗粥,别人一桶水倒进去,淘走90碗,剩下10碗给你,你看似没亏,其实你那10碗已经没有之前的裹腹了,人家的一桶水换90碗,继续卖。说白了,通货膨胀就是,你的钱是挣来的,他的钱是印来的,掺和在一起,你的钱就贬值了。
|