|
#include<STC89.h>
#include <intrins.h>
#include "1602A.H"
#include "KEY.H"
sbit ST=P3^5;
sbit OE=P3^1;
sbit EOC=P3^0;
sbit ADDC=P3^2;
sbit ADDB=P3^3;
sbit ADDA=P3^4;
unsigned int num2;
unsigned int date;
/*******************延时函数********************/
void delay1(unsigned int ms)
{
int i;
while(ms--)
{
for(i = 0; i< 250; i++)
{
_nop_();
_nop_(); //空执行消耗CPU时间达到等待的效果
_nop_();
_nop_();
}
}
}
/************************************************/
void main()
{
unsigned int j;
TMOD=0x11;
TH0=(65536-4000)/256;
TL0=(65536-4000)%256;
TH1=0xff;
TL1=0xfe;
TCON=0x50;
IE=0x8c;
ET0=0;
lcd_init(); //初始化LCD
delay1(10);
while(1)
{
show(date);
key();
if(num2%20==0) //1s采集一次数据
{
for(j=0;j<3;j++)
{
switch(j)
{
case 0:ADDA=0,ADDB=0,ADDC=0; break; //IN0
case 1:ADDA=1,ADDB=0,ADDC=0; break; //IN1
case 2:ADDA=0,ADDB=1,ADDC=0; break; //IN2
}
ST=0;
ST=1;
ST=0;
while(!EOC);
OE=1;
date=P1;
OE=0;
}
}
}
}
void t0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
num2++;
}
为什么加上下边的键盘程序,查忙就无法通过呢?
#ifndef _AS9850_H_
#define _AD9850_H_
unsigned char code table6[2][10]={{0xb7,0xbb,0xbd,0xbe,0xd7,0xdb,0xdd,0xde,0xe7,0xeb},{0,1,2,3,4,5,6,7,8,9}}; //4*3键盘编码
void delay6(unsigned int z)
{
unsigned int x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void key()
{
unsigned int temp,num6,date1;
P3=0xfe;
temp=P3;
temp=temp&0xf0;
while(temp!=0xf0)
{
delay6(5);
temp=P3;
temp=temp&0xf0;
while(temp!=0xf0)
{
temp=P3;
for(num6=0;num6<10;num6++)
{
if(temp==table6[1][num6]) date1=table6[2][num6];
}
}
}
}
#endif |
|