单片机c语言触摸按键功能写法,一个用现代单片机做的简单触摸按键的代码

#i nclude

#define uchar unsigned char

#define uint unsigned int

#define nop() asm("nop")

#define Clrwdt() asm("clrg")

#define di() asm("DI")

uchar RefValue[8];

uint GetRefCount;

uint ErrTime;

void SysInt(void);

void Delayms(uint ms);

uint GetAd(uchar Ch);

void KeyProcess(void);

void GetRef(void);

main(void)

{

SysInt();

while(1)

{

KeyProcess();

}

}

void GetRef(void)

{

uchar i,j;

uint temp;

for(j=1;j<8;j++)

{

temp=0;

for(i=0;i<10;i++)

temp+=GetAd(j);

temp/=10;

temp-=4;

(uchar)(temp);

RefValue[j]=temp;

}

}

uint GetAd(uchar Ch)

{

ADEN=1;

ADCM&=0xC3;

ADCM|=(Ch<<2);

ADCK=0;

ADCRH=0x20;

ADST=1;

do{nop();}while(ADSF!=1);

return ADCRL;

}

void KeyProcess(void)

{

uchar j,i=0;

for(j=1;j<8;j++)

{

if(GetAd(j){

while(1)

{

nop();

if(GetAd(j){

i++;

if(i>=20)

{

R1=(j<<1);

GetRefCount=0;

return;

}

}

else break;

}

}

}

R1=0;

GetRefCount++;

if(GetRefCount>=1200)

{

GetRefCount=0;

GetRef();

}

}

void SysInt(void)

{

Clrwdt();

di();

nop();

CKCTLR=0;

R1IO=0;

R3IO=0;

PU1=0xFF;

PU3=0xFF;

Delayms(50);

R0IO=0x00;

PU0=0;

R0OD=0;

PSR0=0x40;

R1IO=0xFF;

PU1=0;

R1OD=0;

PSR1=0x00;

R1=0;

R3IO=0;

PU3=0x20;

R3OD=0;

R3=0xFF;

TM1=0xA0;

T1PPR=7;

T1PDR=4;

PWM1HR=0x00;

TM1=0xA3;

ErrTime=0;

GetRefCount=0;

Delayms(100);

GetRef();

//RefValue=(GetAd(7)-5);

}

void Delayms(uint ms)

{

uint i,j;

for(i=0;ifor(j=0;j<120;j++)

;

}

自己业余玩玩是可以的批量要改良

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值