⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 key51.asm

📁 单片机做的小键盘
💻 ASM
字号:

#include "INTRINS.H"
#include <main.h>
unsigned int data WuPianData,ZhengPianData,FuPianData,DianLiuData,JianXiangData,KeyData;
unsigned int data WuPianPian,WuPianFu,ZhengPianPian,ZhengPianFu,FuPianPian,FuPianFu;
unsigned char data ReceiveData[21],SinNum;
unsigned int SinNumFuPianfu,DianLiuFu,DianLiuPian,KeyPian,KeyFu;
//sindata[i]=sin(2*3.1415926*i/100)*8192+8191;
unsigned int code SinData[100]={8191,8705, 9217, 9726, 10228, 10722, 11206, 11678, 12137, 12580, 13006, 13412, 13798, 14162, 14503, 14818, 15107, 15369, 15603, 15807, 15982, 
16125, 16237, 16318, 16366, 16383, 16366, 16318, 16237, 16125, 15982, 15807, 15603, 15369, 15107, 14818, 14503, 14162, 13798, 13412, 13006, 
12580, 12137, 11678, 11206, 10722, 10228, 9726, 9217, 8705, 8191, 7676, 7164, 6655, 6153, 5659, 5175, 4703, 4244, 3801, 3375, 
2969, 2583, 2219, 1878, 1563, 1274, 1012, 778, 574, 399, 256, 144, 63, 15, -1, 15, 63, 144, 256, 399, 
574, 778, 1012, 1274, 1563, 1878, 2219, 2583, 2969, 3375, 3801, 4244, 4703, 5175, 5659, 6153, 6655, 7164, 7676 };
void main(void)
{
wu573_1=0;wu573_2=0;zheng573_1=0;zheng573_2=0;fu573_1=0;fu573_2=0;
liu573_1=0;liu573_2=0;
WR=0;//always is 0 can work,no use to 1;
 //INT1 interrupt set********************************
  IT1=1;//high to low touch off interrupt
  EX1=1;//enable INT1 interrupt
  EA=1; //interrupt enable 
//prority low
//Serial port set***************************  
  TMOD=0x20;//set timer1 woris in modle 2  
  TL1=0xFD;TH1=0XFD;//   ;e8 1200  F4 2400  fd 9600
  PCON=0;// baud rate don't double     
  SCON=0xD0;//1101 0000  serial port model 3 work
  TR1=1;//timer 1 start work
  ES=1;//enable serial interrupt

//main cycle ********************************************
start:
clrdog();
if(led==1)led=0;
else led=1;
delay_1ms(800);
goto start;
}

//*******************************************
void interval(void) interrupt 2   //外部中断1
{//hardware clr interrupt flag IE1
 //send7535(WuPian);
WuPianData=((int)SinData[SinNum]-8191)*WuPianFu/8192+WuPianPian;
WuPianOut(WuPianData);
FuPianData=((int)SinData[SinNum]-8191)*FuPianFu/8192+FuPianPian;
FuPianOut(FuPianData);
ZhengPianData=((int)SinData[SinNum]-8191)*ZhengPianFu/8192+ZhengPianPian;
WuPianOut(WuPianData);
DianLiuData=((int)SinData[SinNum]-8191)*DianLiuFu/8192+DianLiuPian;
DianLiuOut(DianLiuData);
KeyData=((int)SinData[SinNum]-8191)*KeyFu/8192+KeyPian;
KeyOut(DianLiuData);
SinNum++;
if(SinNum==100){SinNum==0;}
}
//*********************************//串行中断
void serial_intr(void) interrupt 4 
{unsigned char i;
  RI=0;//clear serial interrupt flag
//erery time receive 21 bytes devided in 6 series, the orde is wupian(0`3),
//fupian(4`7),zhengpian(8`11),
//dianliu(12`15),keyphase(16`19),xor result(20);
//in each order ,the first two bytes is bias voltage,the second two bytes is amplitude;
  for(i=0;i<21;i++)
     {while(RI==0)_nop_;     
      ReceiveData[i]=SBUF;
      RI=0;clrdog();
     }  
led=1;
WuPianPian=ReceiveData[0]+ReceiveData[1]*256;WuPianFu=ReceiveData[2]+ReceiveData[3]*256;
FuPianPian=ReceiveData[4]+ReceiveData[5]*256;FuPianFu=ReceiveData[6]+ReceiveData[7]*256;
ZhengPianPian=ReceiveData[8]+ReceiveData[9]*256;ZhengPianFu=ReceiveData[10]+ReceiveData[11]*256;
DianLiuPian=ReceiveData[12]+ReceiveData[13]*256;DianLiuFu=ReceiveData[14]+ReceiveData[15]*256;
KeyPian=ReceiveData[16]+ReceiveData[17]*256;KeyFu=ReceiveData[18]+ReceiveData[19]*256;
delay_1ms(800);clrdog();delay_1ms(800);clrdog();delay_1ms(800);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -