求高手帮我看下这个程序是干什么的

[复制链接]
查看11 | 回复2 | 2011-5-17 12:10:05 | 显示全部楼层 |阅读模式
includereg52.h
#include\"TypeDefine.h\"
#includeintrins.h

#defineFOSC12000000L
#defineIntervalOneMs(65536-FOSC/12/1000)

sbitKeyGroup1=P2^4;
sbitKeyGroup2=P2^5;
sbitKeyGroup3=P2^6;
sbitKeyGroup4=P2^7;


sbitp13=P1^3;//IO
sbitp14=P1^4;//IO

sbitSDA=P1^0;
sbitSCL=P1^1;

typedefunion{

struct{
unsignedLL:4;
unsignedHH:4;
}cc;
unsignedchardd;
}KeyBufferUnion;

KeyBufferUnionKeyBuffer1;
KeyBufferUnionKeyBuffer2;
KeyBufferUnionKeyBuffer3;
KeyBufferUnionKeyBuffer4;

BYTEKeyBufferOld1;
BYTEKeyBufferOld2;
BYTEKeyBufferOld3;
BYTEKeyBufferOld4;

BYTESystemError;
BYTEwcr;

staticbitflgIntervalTimer;
staticbitflg10ms;

voidTimer0ISR()interrupt1
{
TL0=(BYTE)(IntervalOneMs);
TH0=(BYTE)(IntervalOneMs8);
flgIntervalTimer=TRUE;
}


staticvoidSystemTickTimer(void)
{
staticBYTELocalCnt;
if(LocalCnt=10){
LocalCnt=0;
flg10ms=TRUE;
}
}

voidKeyboardScan(void)
{
staticBYTEsr_ct;

if(sr_ct==0){KeyBuffer1.dd=P2;}
if(sr_ct==1){KeyBuffer2.dd=P2;}
if(sr_ct==2){KeyBuffer3.dd=P2;}
if(sr_ct==3){KeyBuffer4.dd=P2;}

if(sr_ct3){sr_ct;}
else{sr_ct=0;}

KeyGroup1=0;
KeyGroup2=0;
KeyGroup3=0;
KeyGroup4=0;

if(sr_ct==0){KeyGroup1=1;}
if(sr_ct==1){KeyGroup2=1;}
if(sr_ct==2){KeyGroup3=1;}
if(sr_ct==3){KeyGroup4=1;}
}


voidmain(void)
{
CPUInitial();//初始化MCU
while(1){//主循环
if(flgIntervalTimer==TRUE){
flgIntervalTimer=FALSE;
SystemTickTimer();//产生其它更长的timebase
KeyboardScan();
}
if(flg10ms==TRUE){
flg10ms=FALSE;
//write_3(0x50,0xa0,32);
KeyMain();
}
}
}
回复

使用道具 举报

千问 | 2011-5-17 12:10:05 | 显示全部楼层
一个8052嵌入式编程的基本框架,根据时间间隔循环,扫描键盘码输入。
可以再找个基础上扩充成自己需要的应用









<h4class=\"ask\">追问


不是89C51的吗
回复

使用道具 举报

千问 | 2011-5-17 12:10:05 | 显示全部楼层
都是一个系列的芯片,一套东西
回复

使用道具 举报

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

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行