📄 key51.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 + -