- 打卡等级:常住居民I
- 打卡总天数:67
- 最近打卡:2025-12-19 08:07:15
已绑定手机
中级会员
- 积分
- 254
|
rgb 没点亮;
不知道为啥
#include "STC8Hxxxxx.h"
//#include <AI8H.H>
#include <intrins.h>
#include <absacc.h>
#include <string.h>
#include <stdarg.h>
#include <stdio.h>
#include <math.h>
#define TKC P00 // 0 ¸ß×è
#define TKD P01 // 0 ¸ß×è
#define TKE P02 // 0 ¸ß×è
#define TKF P03 // 0 ¸ß×è
// #define NC P04 // 0 ¸ß×è
// #define NC P05 // 0 ¸ß×è
#define NTC P06 // 0 ¸ß×è
#define BUZ P07 // 0 ÍÆÍì
#define TK0 P10 // 0 ¸ß×è
#define TK1 P11 // 0 ¸ß×è
// #define NO P12 // 0 ¸ß×è
#define TK3 P13 // 0 ¸ß×è
#define TK4 P14 // 0 ¸ß×è
#define TK5 P15 // 0 ¸ß×è
#define TK6 P16 // 0 ¸ß×è
#define TK7 P17 // 0 ¸ß×è
#define COM0 P20 // 0 ÍÆÍì
#define COM1 P21 // 0 ÍÆÍì
#define COM2 P22 // 0 ÍÆÍì
#define COM3 P23 // 0 ÍÆÍì
#define COM4 P24 // 0 ÍÆÍì
#define COM5 P25 // 0 ÍÆÍì
#define COM6 P26 // 0 ÍÆÍì
#define COM7 P27 // 0 ÍÆÍì
#define RXD P30 // 1 Ë«Ïò
#define TXD P31 // 1 ÍÆÍì
#define SCL P32 // 1 Ë«Ïò
#define SDA P33 // 1 Ë«Ïò
#define SEGC P34 // 0 ÍÆÍì
#define SEGD P35 // 0 ÍÆÍì
#define SEGE P36 // 0 ÍÆÍì
#define CMP+ P37 // 0 ¸ß×è
#define SEG0 P40 // 0 ÍÆÍì
#define SEG1 P41 // 0 ÍÆÍì
#define SEG2 P42 // 0 ÍÆÍì
#define SEG3 P43 // 0 ÍÆÍì
#define SEG4 P44 // 0 ÍÆÍì
#define SEG5 P45 // 0 ÍÆÍì
#define SEG6 P46 // 0 ÍÆÍì
#define SEG7 P47 // 0 ÍÆÍì
#define TK8 P50 // 0 ¸ß×è
#define TK9 P51 // 0 ¸ß×è
#define TKA P52 // 0 ¸ß×è
#define TKB P53 // 0 ¸ß×è
#define TK2 P54 // 0 ¸ß×è
// #define NO P55 // 0 ¸ß×è
// #define NO P56 // 0 ¸ß×è
// #define NO P57 // 0 ¸ß×è
#define FOSC 24000000UL //Ö÷ʱÖÓ
#define BAUD 115200UL //²¨ÌØÂÊ
#define TMRF 200UL //¶¨Ê±Æ÷ƵÂÊ
#define BRT (0x10000-FOSC/BAUD/4) //²¨ÌØÂÊÖµ
#define TMR (0x10000-FOSC/TMRF/12) //¶¨Ê±Æ÷Öµ
#define T_Buf_Len 64 //Uart1·¢ËÍ»º´æ³¤¶È
#define R_Buf_Len 64 //Uart1½ÓÊÕ»º´æ³¤¶È
#define TS_Channel 16 //´¥Ãþ°´¼üͨµÀÊý
#define TS_Compare 0x0800 //´¥Ãþ°´¼ü±È½ÏÖµ
#define TS_Range 0x0400 //´¥Ãþ°´¼ü»ØÖÍÖµ
unsigned char RP; //Uart2½ÓÊÕÖ¸Õë
unsigned char TP; //Uart2·¢ËÍÖ¸Õë
unsigned char Uart_R_Len; //Uart2½ÓÊÕ³¤¶È
unsigned char Uart_T_Len; //Uart2·¢Ëͳ¤¶È
unsigned char xdata R_Buf[R_Buf_Len]; //Uart2½ÓÊÕ»º´æ
unsigned char xdata T_Buf[T_Buf_Len]; //Uart2·¢ËÍ»º´æ
unsigned char code Seg_Map[19]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71,0x40,0x00,0x80}; //0~F£¬¸Ü£¬¿Õ¸ñ£¬µã
unsigned char Seg_Buf[16];
unsigned char LED_Buf[16];
unsigned char code TS_Map[16]={0x06,0x07,0x0A,0x08,0x0C,0x0D,0x0E,0x0F,0x09,0x0B,0x04,0x05,0x00,0x01,0x02,0x03}; //´¥Ãþ°´¼üͨµÀÖØÓ³Éä
unsigned int xdata TS_Buf[5][TS_Channel]; //´¥Ãþ°´¼üÊý¾Ý£¨Êµ¼ÊÖµ¡¢Ô¤´¦ÀíÖµ¡¢×îСֵ¡¢×î´óÖµ¡¢½á¹û£©
unsigned char TS_Select; //´¥Ãþ°´¼üÑ¡ÔñͨµÀ£¨²é¿´TS_Buf£¬µÍ4λΪµÍά¶È£¬·¶Î§0x*0-0x*B£»¸ß4λΪ¸ßά¶È£¬·¶Î§0x0*-0x4*£©
unsigned char TS_Scan; //´¥Ãþ°´¼üɨÃèͨµÀ
bit TS_Flag; //´¥Ãþ°´¼üÖжϱêÖ¾
unsigned char TS_Calibrate; //´¥Ãþ°´¼üУ׼״̬
unsigned int TS_Pad; //´¥Ãþ°´Å¥×´Ì¬
unsigned char TS_Ring; //´¥Ãþ»¬»·×´Ì¬
unsigned char TS_Slide; //´¥Ãþ»¬Ìõ״̬
unsigned int Ring; //´¥Ãþ»¬»·Öµ
unsigned int Slide; //´¥Ãþ»¬ÌõÖµ
//void Delay_ms(unsigned char ms)
//{
// unsigned int i;
// do
// {
// i=FOSC/10000;
// while(--i); //10T per loop
// }
// while(--ms);
//}
//void Delay_100us(void)
//{
// unsigned char data i,j;
// i=4;
// j=27;
// do
// {
// while (--j);
// }
// while (--i);
//}
void UART_Send(unsigned int x)
{
while(Uart_T_Len);
TP=0;
Uart_T_Len=x;
TI=1;
}
//void Uart_Printf(unsigned char *v,...)
//{
// va_list ap;
// va_start(ap,v);
// while(Uart_T_Len);
// UART_Send(vsprintf(T_Buf,v,ap));
// va_end(ap);
//}
void UART_Return(unsigned char temp)
{
memcpy(T_Buf,R_Buf,temp);
UART_Send(temp);
}
void Buzzer(void)
{
if(TS_Pad&0x0100)
BUZ=1;
else
BUZ=0;
}
void Seg_Display(void)
{
Seg_Buf[0x00]=((TS_Calibrate<<8)|TS_Select)>>4;
Seg_Buf[0x01]=((TS_Calibrate<<8)|TS_Select)&0x0F;
Seg_Buf[0x02]=16;
Seg_Buf[0x03]=TS_Buf[TS_Select>>4][TS_Select&0x0F]/10000;
Seg_Buf[0x04]=TS_Buf[TS_Select>>4][TS_Select&0x0F]%10000/1000;
Seg_Buf[0x05]=TS_Buf[TS_Select>>4][TS_Select&0x0F]%1000/100;
Seg_Buf[0x06]=TS_Buf[TS_Select>>4][TS_Select&0x0F]%100/10;
Seg_Buf[0x07]=TS_Buf[TS_Select>>4][TS_Select&0x0F]%10;
Seg_Buf[0x08]=Slide%10000/1000;
Seg_Buf[0x09]=Slide%1000/100;
Seg_Buf[0x0A]=Slide%100/10;
Seg_Buf[0x0B]=Slide%10;
Seg_Buf[0x0C]=Ring%10000/1000;
Seg_Buf[0x0D]=Ring%1000/100;
Seg_Buf[0x0E]=Ring%100/10;
Seg_Buf[0x0F]=Ring%10;
}
void LED_Display(void)
{
LED_Buf[0x00]=TS_Pad&0x0001?0x07:0x00;
LED_Buf[0x01]=TS_Pad&0x0002?0x07:0x00;
LED_Buf[0x02]=TS_Pad&0x0004?0x07:0x00;
LED_Buf[0x03]=TS_Pad&0x0008?0x07:0x00;
LED_Buf[0x04]=TS_Pad&0x0010?0x07:0x00;
LED_Buf[0x05]=TS_Pad&0x0020?0x07:0x00;
LED_Buf[0x06]=TS_Pad&0x0040?0x07:0x00;
LED_Buf[0x07]=TS_Pad&0x0080?0x07:0x00;
LED_Buf[0x08]=TS_Pad&0x0100?0x07:0x00;
LED_Buf[0x09]=TS_Ring&0x01?0x07:0x00;
LED_Buf[0x0A]=TS_Ring&0x02?0x07:0x00;
LED_Buf[0x0B]=TS_Ring&0x04?0x07:0x00;
LED_Buf[0x0C]=TS_Slide&0x01?0x07:0x00;
LED_Buf[0x0D]=TS_Slide&0x02?0x07:0x00;
LED_Buf[0x0E]=TS_Slide&0x04?0x07:0x00;
LED_Buf[0x0F]=TS_Slide&0x08?0x07:0x00;
}
void LED(void)
{
unsigned char i;
unsigned char xdata *p=XBYTE+0xFB10;
Seg_Display();
LED_Display();
for(i=0;i<8;i++)
{
*(p+i)=Seg_Map[Seg_Buf];
*(p+8+i)=(LED_Buf&0x07)<<4;
*(p+16+i)=Seg_Map[Seg_Buf[8+i]];
*(p+24+i)=(LED_Buf[8+i]&0x07)<<4;
}
// COM0_DA_L=Seg_Map[Seg_Buf[0x00]];
// COM1_DA_L=Seg_Map[Seg_Buf[0x01]];
// COM2_DA_L=Seg_Map[Seg_Buf[0x02]];
// COM3_DA_L=Seg_Map[Seg_Buf[0x03]];
// COM4_DA_L=Seg_Map[Seg_Buf[0x04]];
// COM5_DA_L=Seg_Map[Seg_Buf[0x05]];
// COM6_DA_L=Seg_Map[Seg_Buf[0x06]];
// COM7_DA_L=Seg_Map[Seg_Buf[0x07]];
// COM0_DC_L=Seg_Map[Seg_Buf[0x08]];
// COM1_DC_L=Seg_Map[Seg_Buf[0x09]];
// COM2_DC_L=Seg_Map[Seg_Buf[0x0A]];
// COM3_DC_L=Seg_Map[Seg_Buf[0x0B]];
// COM4_DC_L=Seg_Map[Seg_Buf[0x0C]];
// COM5_DC_L=Seg_Map[Seg_Buf[0x0D]];
// COM6_DC_L=Seg_Map[Seg_Buf[0x0E]];
// COM7_DC_L=Seg_Map[Seg_Buf[0x0F]];
// COM0_DA_H=(LED_Buf[0x00]&0x07)<<4;
// COM1_DA_H=(LED_Buf[0x01]&0x07)<<4;
// COM2_DA_H=(LED_Buf[0x02]&0x07)<<4;
// COM3_DA_H=(LED_Buf[0x03]&0x07)<<4;
// COM4_DA_H=(LED_Buf[0x04]&0x07)<<4;
// COM5_DA_H=(LED_Buf[0x05]&0x07)<<4;
// COM6_DA_H=(LED_Buf[0x06]&0x07)<<4;
// COM7_DA_H=(LED_Buf[0x07]&0x07)<<4;
// COM0_DC_H=(LED_Buf[0x08]&0x07)<<4;
// COM1_DC_H=(LED_Buf[0x09]&0x07)<<4;
// COM2_DC_H=(LED_Buf[0x0A]&0x07)<<4;
// COM3_DC_H=(LED_Buf[0x0B]&0x07)<<4;
// COM4_DC_H=(LED_Buf[0x0C]&0x07)<<4;
// COM5_DC_H=(LED_Buf[0x0D]&0x07)<<4;
// COM6_DC_H=(LED_Buf[0x0E]&0x07)<<4;
// COM7_DC_H=(LED_Buf[0x0F]&0x07)<<4;
}
unsigned int Compare(bit x,unsigned int a,unsigned int b) //Á½¸öÖµ±È½Ï£¬·µ»Ø×î´óÖµ»ò×îСֵ£¬ÓÃÓÚ´¥Ãþ°´¼üУ׼×î´ó×îСֵ
{
return a==b?a:(x==0?(a<b?a:b):(a>b?a:b)); //±È½Ï´óС£¬x=0·µ»Ø×îСֵ£¬x=1·µ»Ø×î´óÖµ
}
void Calibrate(void) //´¥Ãþ°´¼ü×î´ó×îСֵУ׼
{
unsigned char i;
static unsigned char flag; //µÍ4λΪÊ×´ÎУ׼±êÖ¾£¬¸ß4λÎÞÓÃ
switch(TS_Calibrate)
{
case 0: //È¡ÏûУ׼
flag=0x0F; //·ÇУ׼״̬²ÅÔÊÐíÖÃλ4¸ö±ê־λ
break;
case 1: //У׼µ¥Í¨µÀ×îСֵ
if(flag&0x01) //Ê״νøÈ뵥ͨµÀ×îСֵУ׼״̬£¬Ê¹Óõ±Ç°ÖµÌæ»»×îСֵ
{
flag&=0x0E; //Çå³ý±ê־λ£¬È¡ÏûУ׼ǰ²»ÔÙÌæ»»
TS_Buf[2][TS_Select&0x0F]=TS_Buf[1][TS_Select&0x0F];
}
else //·ÇÊ״νøÈ뵥ͨµÀ×îСֵУ׼״̬£¬±È½Ïµ±Ç°ÖµºÍ×îСֵ£¬²¢ÓýÏÐ¡ÖµÌæ»»×îСֵ
{
TS_Buf[2][TS_Select&0x0F]=Compare(0,TS_Buf[1][TS_Select&0x0F],TS_Buf[2][TS_Select&0x0F]);
}
break;
case 2: //У׼µ¥Í¨µÀ×î´óÖµ
if(flag&0x02) //Ê״νøÈ뵥ͨµÀ×î´óֵУ׼״̬£¬Ê¹Óõ±Ç°ÖµÌæ»»×î´óÖµ
{
flag&=0x0D; //Çå³ý±ê־λ£¬È¡ÏûУ׼ǰ²»ÔÙÌæ»»
TS_Buf[3][TS_Select&0x0F]=TS_Buf[1][TS_Select&0x0F];
}
else //·ÇÊ״νøÈ뵥ͨµÀ×î´óֵУ׼״̬£¬±È½Ïµ±Ç°ÖµºÍ×î´óÖµ£¬²¢ÓýϴóÖµÌæ»»×î´óÖµ
{
TS_Buf[3][TS_Select&0x0F]=Compare(1,TS_Buf[1][TS_Select&0x0F],TS_Buf[3][TS_Select&0x0F]);
}
break;
case 3: //У׼ËùÓÐͨµÀ×îСֵ
if(flag&0x04) //Ê״νøÈëËùÓÐͨµÀ×îСֵУ׼״̬£¬Ê¹Óõ±Ç°ÖµÌæ»»×îСֵ
{
flag&=0x0B; //Çå³ý±ê־λ£¬È¡ÏûУ׼ǰ²»ÔÙÌæ»»
for(i=0;i<TS_Channel;i++)
{
TS_Buf[2]=TS_Buf[1];
}
}
else //·ÇÊ״νøÈëËùÓÐͨµÀ×îСֵУ׼״̬£¬±È½Ïµ±Ç°ÖµºÍ×îСֵ£¬²¢ÓýÏÐ¡ÖµÌæ»»×îСֵ
{
for(i=0;i<TS_Channel;i++)
{
TS_Buf[2]=Compare(0,TS_Buf[1],TS_Buf[2]);
}
}
break;
case 4: //У׼ËùÓÐͨµÀ×î´óÖµ
if(flag&0x08) //Ê״νøÈëËùÓÐͨµÀ×î´óֵУ׼״̬£¬Ê¹Óõ±Ç°ÖµÌæ»»×î´óÖµ
{
flag&=0x07; //Çå³ý±ê־λ£¬È¡ÏûУ׼ǰ²»ÔÙÌæ»»
for(i=0;i<TS_Channel;i++)
{
TS_Buf[3]=TS_Buf[1];
}
}
else //·ÇÊ״νøÈëËùÓÐͨµÀ×î´óֵУ׼״̬£¬±È½Ïµ±Ç°ÖµºÍ×î´óÖµ£¬²¢ÓýϴóÖµÌæ»»×î´óÖµ
{
for(i=0;i<TS_Channel;i++)
{
TS_Buf[3]=Compare(1,TS_Buf[1],TS_Buf[3]);
}
}
break;
default:
break;
}
}
void Touch_Pad(void) //´¥Ãþ°´Å¥
{
unsigned char i;
unsigned int limit_l,limit_h;
limit_l=TS_Compare-TS_Range/2;
limit_h=TS_Compare+TS_Range/2;
for(i=0;i<9;i++)
{
if(TS_Buf[4]<=limit_l)
{
TS_Pad&=~(0x01<<i);
}
if(TS_Buf[4]>=limit_h)
{
TS_Pad|=0x01<<i;
}
}
}
void Touch_Ring(void) //´¥Ãþ»¬»·
{
unsigned char i,sector;
unsigned int limit_l,limit_h,sum;
limit_l=TS_Compare-TS_Range/2;
limit_h=TS_Compare+TS_Range/2;
TS_Ring=0;
for(i=0;i<3;i++) //¼ÆËã´¥Ãþ»¬»·×´Ì¬
{
if(TS_Buf[4][i+9]<=limit_l) //СÓڽϵͱȽÏÖµ±ê־λÖÃ0
{
TS_Ring&=~(0x01<<i);
}
if(TS_Buf[4][i+9]>=limit_h) //´óÓڽϸ߱ȽÏÖµ±ê־λÖÃ1
{
TS_Ring|=0x01<<i;
}
}
if(TS_Ring&0x07) //Èç¹ûµÍ3λÖÐÈÎÒâһλÓÐЧ±íʾ´¥Ãþ»¬»·°´ÏÂ
{
TS_Ring|=0x80; //´¥Ãþ»¬»·°´Ï£¬×î¸ßλΪ1
if(TS_Ring==0x81|TS_Ring==0x82|TS_Ring==0x83|TS_Ring==0x84|TS_Ring==0x85|TS_Ring==0x86) //°´ÏÂ״̬ÖÐÖ»ÓÐÕâ6ÖÖ״̬ÓÐЧ
{
for(sum=0,i=9;i<12;i++)
{
sum+=TS_Buf[4];
}
if(TS_Buf[4][0x09]>=TS_Buf[4][0x0A]&&TS_Buf[4][0x09]>=TS_Buf[4][0x0B]) //´¥Ãþ»¬»·ÔÚ10µ½2µãÖÓ·½Ïò£¨ÉÈÇø0»ò5£©
{
if(TS_Buf[4][0x0A]>=TS_Buf[4][0x0B]) //BÏà´óÓÚµÈÓÚCÏ࣬ÔÚ0µ½2µãÖÓ·½Ïò£¨ÉÈÇø0£©
{
sector=0;
Ring=((TS_Buf[4][0x0A]-(TS_Buf[4][0x0B]*(TS_Buf[4][0x09]/(TS_Buf[4][0x0A]*2))))*0x0555UL)/(TS_Buf[4][0x09]+TS_Buf[4][0x0A]);
}
else //BÏàСÓÚCÏ࣬ÔÚ10µ½0µãÖÓ·½Ïò£¨ÉÈÇø5£©
{
sector=5;
Ring=((TS_Buf[4][0x09]+(TS_Buf[4][0x0A]*(TS_Buf[4][0x09]/(TS_Buf[4][0x0B]*2))))*0x0555UL)/(TS_Buf[4][0x0B]+TS_Buf[4][0x09])+0x0AAA;
}
}
else if(TS_Buf[4][0x0A]>=TS_Buf[4][0x09]&&TS_Buf[4][0x0A]>=TS_Buf[4][0x0B]) //´¥Ãþ»¬»·ÔÚ2µ½6µãÖÓ·½Ïò£¨ÉÈÇø1»ò2£©
{
if(TS_Buf[4][0x0B]>=TS_Buf[4][0x09]) //CÏà´óÓÚµÈÓÚAÏ࣬ÔÚ4µ½6µãÖÓ·½Ïò£¨ÉÈÇø2£©
{
sector=2;
Ring=((TS_Buf[4][0x0B]-(TS_Buf[4][0x09]*(TS_Buf[4][0x0A]/(TS_Buf[4][0x0B]*2))))*0x0555UL)/(TS_Buf[4][0x0A]+TS_Buf[4][0x0B])+0x0555;
}
else //CÏàСÓÚAÏ࣬ÔÚ2µ½4µãÖÓ·½Ïò£¨ÉÈÇø1£©
{
sector=1;
Ring=((TS_Buf[4][0x0A]+(TS_Buf[4][0x0B]*(TS_Buf[4][0x0A]/(TS_Buf[4][0x09]*2))))*0x0555UL)/(TS_Buf[4][0x09]+TS_Buf[4][0x0A]);
}
}
else if(TS_Buf[4][0x0B]>=TS_Buf[4][0x09]&&TS_Buf[4][0x0B]>=TS_Buf[4][0x0A]) //´¥Ãþ»¬»·ÔÚ6µ½10µãÖÓ·½Ïò£¨ÉÈÇø3»ò4£©
{
if(TS_Buf[4][0x09]>=TS_Buf[4][0x0A]) //AÏà´óÓÚµÈÓÚBÏ࣬ÔÚ8µ½10µãÖÓ·½Ïò£¨ÉÈÇø4£©
{
sector=4;
Ring=((TS_Buf[4][0x09]-(TS_Buf[4][0x0A]*(TS_Buf[4][0x0B]/(TS_Buf[4][0x09]*2))))*0x0555UL)/(TS_Buf[4][0x0B]+TS_Buf[4][0x09])+0x0AAA;
}
else //AÏàСÓÚBÏ࣬ÔÚ6µ½8µãÖÓ·½Ïò£¨ÉÈÇø3£©
{
sector=3;
Ring=((TS_Buf[4][0x0B]+(TS_Buf[4][0x09]*(TS_Buf[4][0x0B]/(TS_Buf[4][0x0A]*2))))*0x0555UL)/(TS_Buf[4][0x0A]+TS_Buf[4][0x0B])+0x0555;
}
}
}
else //È«°´ÏÂÎÞЧ£¬´¥Ãþ»¬»·ÖµÎª0
{
Ring=0;
}
}
else //´¥Ãþ»¬»·Ã»Óа´Ïµģ¬¸´Î»±ê־룬´¥Ãþ»¬»·ÖµÎª0
{
TS_Ring&=0x7F;
Ring=0;
}
}
void Touch_Slide(void) //´¥Ãþ»¬Ìõ
{
unsigned char i;
unsigned int limit_l,limit_h,sum;
limit_l=TS_Compare-TS_Range/2;
limit_h=TS_Compare+TS_Range/2;
TS_Slide=0;
for(i=0;i<4;i++)
{
if(TS_Buf[4][i+12]<=limit_l)
{
TS_Slide&=~(0x01<<i);
}
if(TS_Buf[4][i+12]>=limit_h)
{
TS_Slide|=0x01<<i;
}
}
if(TS_Slide&0x0F)
{
TS_Slide|=0x80;
if(TS_Slide==0x81|TS_Slide==0x82|TS_Slide==0x83|TS_Slide==0x84|TS_Slide==0x86|TS_Slide==0x87|TS_Slide==0x88|TS_Slide==0x8C|TS_Slide==0x8E)
{
for(sum=0,i=8;i<12;i++)
{
sum+=TS_Buf[4];
}
if(TS_Buf[4][0x0C]>=TS_Buf[4][0x0D]&&TS_Buf[4][0x0C]>=TS_Buf[4][0x0E]&&TS_Buf[4][0x0C]>=TS_Buf[4][0x0F])
{
Slide=0x0000;
}
else if(TS_Buf[4][0x0D]>=TS_Buf[4][0x0C]&&TS_Buf[4][0x0D]>=TS_Buf[4][0x0E]&&TS_Buf[4][0x0D]>=TS_Buf[4][0x0F])
{
Slide=0x0555;
}
else if(TS_Buf[4][0x0E]>=TS_Buf[4][0x0C]&&TS_Buf[4][0x0E]>=TS_Buf[4][0x0D]&&TS_Buf[4][0x0E]>=TS_Buf[4][0x0F])
{
Slide=0x0AAA;
}
else if(TS_Buf[4][0x0F]>=TS_Buf[4][0x0C]&&TS_Buf[4][0x0F]>=TS_Buf[4][0x0D]&&TS_Buf[4][0x0F]>=TS_Buf[4][0x0E])
{
Slide=0x0FFF;
}
else
{
Slide=0;
}
}
else
{
Slide=0;
}
}
else
{
TS_Slide&=0x7F;
Slide=0;
}
}
void Touch_Key(void)
{
unsigned char i;
if(TS_Flag)
{
TS_Flag=0;
for(i=0;i<TS_Channel;i++)
{
TS_Buf[1]=TS_Buf[1]*3+((0xFFFF-TS_Buf[0])>>2)>>2;
if(TS_Buf[3]>TS_Buf[2])
{
TS_Buf[4]=(TS_Buf[1]>TS_Buf[2]?(TS_Buf[1]-TS_Buf[2]):0)*0x1000UL/(TS_Buf[3]-TS_Buf[2]);
if(TS_Buf[4]>0x0FFF)
{
TS_Buf[4]=0x0FFF;
}
}
else
{
TS_Buf[4]=0;
}
}
Calibrate();
Touch_Pad();
Touch_Ring();
Touch_Slide();
}
}
void Init(void)
{
//P_SW2|=EAXFR;
P_SW2 |= 0x80; //ÔÊÐí·ÃÎÊXSF
P0=0x00;
P1=0x00;
P2=0x00;
P3=0x0F;
P4=0x00;
P5=0x00;
P0M0=0x80;
P0M1=0x7F;
P1M0=0x00;
P1M1=0xFF;
P2M0=0xFF;
P2M1=0x00;
P3M0=0x72;
P3M1=0x80;
P4M0=0xFF;
P4M1=0x00;
P5M0=0x00;
P5M1=0xFF;
// X32KCR=0xC0; //Æô¶¯Íⲿ32768¾§Õñ£¬ÉèÖøßÔöÒæ
// while(!(X32KCR&0x01));
AUXR=0x05; //ÉèÖö¨Ê±Æ÷0ʱÖÓΪ12Tģʽ£¬ÉèÖö¨Ê±Æ÷2Ϊ1Tģʽ£¬ÉèÖö¨Ê±Æ÷2Ϊ²¨ÌØÂÊ·¢ÉúÆ÷
TMOD=0x01; //ÉèÖö¨Ê±Æ÷0Ϊ16λ²»×Ô¶¯ÖØ×°ÔØÄ£Ê½
TH0=TMR>>8; //ÉèÖö¨Ê±Æ÷0³õʼֵ
TL0=TMR; //ÉèÖö¨Ê±Æ÷0³õʼֵ
TF0=0; //Çå³ýTF0Öжϱê־λ
ET0=1; //ÆôÓö¨Ê±Æ÷0ÖжÏ
SCON=0x50; //ÉèÖÃUART1ģʽΪ8λÊý¾Ý¿É±ä²¨ÌØÂÊ
T2H=BRT>>8; //ÉèÖÃUART1²¨ÌØÂÊ
T2L=BRT; //ÉèÖÃUART1²¨ÌØÂÊ
AUXR|=0x10; //´ò¿ª¶¨Ê±Æ÷2
ES=1; //ÆôÓÃUART1ÖжÏ
TSCHEN1=0xFF; //TK00~TK07
TSCHEN2=0xFF; //TK08~TK15
TSRT=0x00; //ûÓÐLED·ÖʱɨÃè
TSCFG1=0x73; //¿ª¹ØµçÈݹ¤×÷ƵÂÊ = fosc/(2*(TSCFG1[6:4]+1))£¬·Åµçʱ¼ä(ϵͳʱÖÓÖÜÆÚÊý) 0(125) 1(250) 2(500) 3(1000) 4(2000) 5(2500) 6(5000) 7(7500) ×îС3
TSCFG2=0x03; //ÅäÖô¥Ãþ°´¼ü¿ØÖÆÆ÷µÄÄÚ²¿²Î¿¼µçѹ(AVCCµÄ·Öѹ±È)£¬0(1/4) 1(1/2) 2(5/8) 3(3/4)
TSCTRL=0x33; //ÖØ¸´É¨Ãèģʽ£¬Íê³ÉÒ »ÂÖɨÃèÔÝÍ££¬µÍ¹¦ºÄģʽʱÖÓΪÍⲿ32768¾§Õñ£¬¹Ø±ÕÊý×Ö±È½ÏÆ÷£¬¹Ø±ÕµÍ¹¦ºÄ»½ÐÑ£¬4´Îƽ¾ù£¬B7: TSGO£¬B6: SINGLE£¬B5: TSWAIT£¬B4: TSWUCS£¬B3: TSDCEN£¬B2: TSWUEN£¬B1 B0: TSSAMP
TSCTRL|=0x80; //¿ªÊ¼É¨Ãè
IE2|=0x80; //ÆôÓô¥ÃþÖжÏ
COMEN=0xFF; //ʹÄÜCOM
SEGENL=0xFF; //ʹÄÜSEG
SEGENH=0x70; //ʹÄÜSEG
LEDCTRL=0xA0; //ʹÄÜLEDÇý¶¯Æ÷£¬¹²Òõ¹²Ñôģʽ£¬ÁÁ¶È100%
LEDCKS=0x00; //
EA=1; //ÆôÓÃ×ÜÖжÏ
COM0_DA_L=0x00;
COM0_DA_H=0x00;
COM1_DA_L=0x00;
COM1_DA_H=0x00;
COM2_DA_L=0x00;
COM2_DA_H=0x00;
COM3_DA_L=0x00;
COM3_DA_H=0x00;
COM4_DA_L=0x00;
COM4_DA_H=0x00;
COM5_DA_L=0x00;
COM5_DA_H=0x00;
COM6_DA_L=0x00;
COM6_DA_H=0x00;
COM7_DA_L=0x00;
COM7_DA_H=0x00;
COM0_DC_L=0x00;
COM0_DC_H=0x00;
COM1_DC_L=0x00;
COM1_DC_H=0x00;
COM2_DC_L=0x00;
COM2_DC_H=0x00;
COM3_DC_L=0x00;
COM3_DC_H=0x00;
COM4_DC_L=0x00;
COM4_DC_H=0x00;
COM5_DC_L=0x00;
COM5_DC_H=0x00;
COM6_DC_L=0x00;
COM6_DC_H=0x00;
COM7_DC_L=0x00;
COM7_DC_H=0x00;
memset(R_Buf,0x00,sizeof R_Buf);
memset(T_Buf,0x00,sizeof T_Buf);
memset(TS_Buf,0x00,sizeof TS_Buf);
TS_Buf[2][0x00]=11570;
TS_Buf[2][0x01]=11352;
TS_Buf[2][0x02]=11496;
TS_Buf[2][0x03]=11365;
TS_Buf[2][0x04]=11279;
TS_Buf[2][0x05]=11188;
TS_Buf[2][0x06]=11346;
TS_Buf[2][0x07]=11282;
TS_Buf[2][0x08]=11010;
TS_Buf[2][0x09]=13986;
TS_Buf[2][0x0A]=14044;
TS_Buf[2][0x0B]=14051;
TS_Buf[2][0x0C]=12218;
TS_Buf[2][0x0D]=12200;
TS_Buf[2][0x0E]=12531;
TS_Buf[2][0x0F]=12320;
TS_Buf[3][0x00]=14863;
TS_Buf[3][0x01]=14798;
TS_Buf[3][0x02]=14860;
TS_Buf[3][0x03]=14897;
TS_Buf[3][0x04]=14781;
TS_Buf[3][0x05]=14859;
TS_Buf[3][0x06]=14882;
TS_Buf[3][0x07]=14922;
TS_Buf[3][0x08]=14838;
TS_Buf[3][0x09]=14987;
TS_Buf[3][0x0A]=14881;
TS_Buf[3][0x0B]=14965;
TS_Buf[3][0x0C]=14616;
TS_Buf[3][0x0D]=14306;
TS_Buf[3][0x0E]=14357;
TS_Buf[3][0x0F]=14573;
TS_Select=0x48;
}
void main(void)
{
Init();
P20 = 0;
P21 = 0;
P34 = 1;
P35 = 1;
P36 = 1;
while(1)
{
// Touch_Key();
// LED();
// Buzzer();
}
}
void Uart_Start(void)
{
TH0=TMR>>8;
TL0=TMR;
TR0=1;
}
void Uart_Stop(void)
{
TR0=0;
TH0=TMR>>8;
TL0=TMR;
RP=0;
memset(R_Buf,0x00,sizeof R_Buf);
}
void Timer0_Isr(void) interrupt TMR0_VECTOR //Èí¼þ×ö´®¿Ú³¬Ê±Åжϣ¬³¬Ê±ºó´¦ÀíÊý¾Ý
{
if(((R_Buf[0]>>4)<=4)) //¸ß4λΪ0~4Çл»Í¨µÀÏÔʾ£¬ÏÔʾTS_Buf[x][y]£¬¸ß4λΪx£¬µÍ4λΪy
TS_Select=R_Buf[0];
else if(((R_Buf[0]>>4)==0x05)&&((R_Buf[0]&0x0F)<=0x04)) //¸ß4λΪ5ÇÒµÍ4λΪ0~4ÉèÖÃУ׼״̬£¬0x50È¡ÏûУ׼£¬0x51У׼µ¥Í¨µÀ×îСֵ£¬0x52У׼µ¥Í¨µÀ×î´óÖµ£¬0x53У׼ËùÓÐͨµÀ×îСֵ£¬0x54У׼ËùÓÐͨµÀ×î´óÖµ
TS_Calibrate=R_Buf[0]&0x07;
UART_Return(RP); //ÔÑù·µ»ØÊÕµ½µÄÄÚÈÝ
Uart_Stop();
}
void Uart1_Isr(void) interrupt UART1_VECTOR
{
if(RI)
{
RI=0;
Uart_Start();
R_Buf[RP]=SBUF;
if(RP==R_Buf_Len-1)
{
Uart_Stop();
}
else if(TR0)
{
RP++;
}
}
if(TI)
{
TI=0;
if(TP==Uart_T_Len)
{
TP=0;
Uart_T_Len=0;
}
if(Uart_T_Len!=0)
{
SBUF=(T_Buf[TP]);
TP++;
}
}
}
void TKSU_Isr(void) interrupt 13
{
unsigned char temp;
temp=TSSTA2;
if(temp&0x40) //Êý¾ÝÒç³ö, ´íÎó´¦Àí
{
TSSTA2|=0x40; //д1ÇåÁã
}
else if(temp&0x80) //ɨÃèÍê³É
{
TS_Scan=temp&0x0f;
if(TS_Map[TS_Scan]!=0xFF) //Èç¹ûͨµÀÕýÈ·
{
TS_Buf[0][TS_Map[TS_Scan]]=TSDAT; //±£´æÄ³¸öͨµÀµÄ¶ÁÊý
TS_Flag=1;
}
}
TSSTA2|=0x80; //д1ÇåÁã
}
|
|