问题描述
- 矩阵键盘控制ADC0832端口
-
各位前辈,我编了一个有由矩阵键盘控制ADC0832端口的电路,调不出来,怎么破?要求是在键盘输入一个数值(0~255),这个数值相应为ADC0832的端口输入得值,按Enter键结束.程序如下#include "iom128v.h"
#include "macros.h"
#include "keym.h"
#define uchar unsigned char ;
#define uint unsigned intunsigned char tab1[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
/*延时函数*/
void delay1(uint m)
{
uint a,b;
for(a=0;a<m;a++)
for(b=0;b<500;b++);}
void io_init(void) {
DDRD = 0x00; PORTD = 0xFF; DDRC = 0x00; /*方向输入*/ PORTC = 0xFF; /*打开上拉*/ DDRE = 0x00; PORTE = 0xFF;
}
int pow(unsigned char a,unsigned char b)//当a=1时,10的幂,b为指数
{
unsigned char z,j,k=1;
for(j=0;j<b;j++)
{
k*=10;
}
z=a*k;
return z;
}void main(void)
{
void io_init();
uint x=0,num,count=0,count1=0,i=0,j=0;
delay1(1);
DDRD=0xc0;
PORTD&=(~BIT(7))|(~BIT(6));
DDRC=0xff;
PORTC=0x00;
while(1)
{
while(1)
{
if(num=tab[keym()])
{
tab1[i]|=num;
//count+=tab1[i]*pow(1,j);
//PORTC=count;
j++;
i++;
break;
}
}
while(1)
{
if(num!=tab[keym()])
break;
if(num==-16) //按下Enter
{
for(i;i>=0;i--)
{
i--;j--;
count+=tab1[i]*pow(1,j);
PORTC=count; //此为ADC0832端口
j++;
}
}}
}
}