?? ceshi.c
字號:
//測試成功,計數結果為1296(左右)時則可認為是引導碼的開始
//若計數結果為108左右則認為是'0'碼
//若計數結果為210左右則認為是'1'碼
//若計數結果為1104左右則認為是連發代碼,舍棄
//根據測試的計數次數判斷為0和1嗎
//數據碼為最后8位碼,只要根據相應的數據碼就可以確定是按下哪個鍵了
//系統碼:02H
//1-7FH;2-BFH;3-3FH;4-DFH;5-5FH;6-9FH;7-1FH;8-EFH;9-6FH;0-FFH;(VOL-)-87H;(VOL+)-A7H;(CH+)-27H;(CH-)-07H;
//'M'-C5H;D1-8FH;D2-37H;D3-D5H;
//(伴音)-37H;(麗音)-D5H;(濕式)-E5;
//聲音-47H;畫中畫-75H;(-/--)-2FH
#include<spce061a_chf.h>
#define startA 0x0031//4096&1
#define stopA 0x0036//0&0停止計數
unsigned int get_ma();
extern num[34];
unsigned int flag1;
unsigned int value;
int main()
{
Set_IOB_Dir(0x0000);
Set_IOB_Attrib(0x0004);
Set_IOB_Data(0x0004);//外部中斷為懸浮式輸入
//時鐘的設置
*P_SystemClock=0x0013;//24.576--24.576/8
//定時器時鐘的設置
Set_TimerA_Data(0x0000);//定時器A從0開始計數
Set_TimerA_Ctrl(stopA);//開始先不計數
//設置中斷
*P_INT_Ctrl=0x0100;//開IRQ3_EXIT1中斷
//開中斷
asm("irq on");
while(1)
{
Watchdog_Clear();
if(flag1)
{
value=get_ma();
flag1=0;
}
}
}
unsigned int get_ma()
{
unsigned int b[8];//在此定義的數組不能賦值
unsigned int i;
for(i=0;i<8;i++)
{
b[i]=num[i+26];
}
//for(i=0;i<8;i++)
//{
// if(b[i]>200)
//{
// b[i]=1;
// }
// else
// {
// b[i]=0;
// }
//}
//i=b[0]*128+b[1]*64+b[2]*32+b[3]*16+b[4]*8+b[5]*4+b[6]*2+b[7]*1;
i=atoi(b);
switch(i)
{
case 0xff:return(1);break;
case 0x7f:return(10);break;
case 0xbf:return(20);break;
case 0x3f:return(30);break;
case 0xdf:return(40);break;
case 0x5f:return(50);break;
case 0x9f:return(60);break;
case 0x1f:return(70);break;
case 0xef:return(80);break;
case 0x6f:return(90);break;
case 0x87:return(100);break;
case 0x27:return(110);break;
case 0xa7:return(120);break;
case 0x07:return(130);break;
case 0x05:return(140);break;
case 0x95:return(150);break;
default:return(value);break;
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -