?? main.c
字號:
//*****************************
//鍵盤提示音
//*****************************
#include<reg52.h>
//包含自己使用的鍵盤驅動的頭文件, 以調用獲取按鍵值的函數
#include"key_4x3.h"
//如果還沒學會多文件編程,可以將自己的鍵盤掃描程序,
//放到本文件里,直接調用里面的函數,并去掉#include"key_4x3.h"
#define uchar unsigned char
#define uint unsigned int
//IO口和位定義
#define LIGHT P1
sbit bell = P0^1;
sbit led = P0^2;
uchar keynum; //按鍵序號
bit flag = 0; //鍵盤掃描標志[盡量用字節數少的數據類型]
//****************************
//短促的提示聲
//****************************
void bi(void)
{
bell = 1; //響
led = 0; //燈亮
}
//****************************
//初始化,使蜂鳴器和燈不工作
//****************************
void Initi(void)
{
bell = 0; // 不響 [0或1由自己使用的電路決定]
led = 1; // 燈滅
}
////////////////////////////////////////////
void main(void)
{
TMOD = 0x01; //定時器0,16位工作方式
TH0 = (65536 - 10000) / 256; //給定時器高8位裝入初值
TL0 = (65536 - 10000) % 256; //給定時器低8位裝入初值
ET0 = 1; //打開定時器0中斷
EA = 1; //打開總中斷 [兩者都打開才行]
TR0 = 1; //啟動定時器
Initi(); //簡單初始化一下
while(1)
{
if(flag)
{
keynum = KEY_num(0); //鍵盤掃描后返回按鍵序號 1~12,換成自己的鍵盤掃描函數,
flag = 0;
}
switch(keynum)
{
case 1:bi(); LIGHT = 0xfe; break; // 按鍵1
case 2:bi(); LIGHT = 0xfe<<1; break; // 按鍵2
case 3:bi(); LIGHT = 0xfe<<2; break; // 按鍵3
case 4:bi(); LIGHT = 0xfe<<3; break;
case 5:bi(); LIGHT = 0xfe<<4; break;
case 6:bi(); LIGHT = 0xfe<<5; break;
case 7:bi(); LIGHT = 0xfe<<6; break;
case 8:bi(); LIGHT = 0xfe<<7; break; // 按鍵8
case 9:
case 10:
case 11:
case 12:bi(); break;
default: Initi(); break; //沒有按鍵按下,不響
}
}
}
//中斷服務
void KeyScan(void) interrupt 1 using 0
{
TR0 = 0; //可以先關掉定時器
flag = 1; //掃描鍵盤允許標志
// keynum = KEY_num(0); //建議在中斷函數里不要放太多代碼
TH0 = (65536 - 10000) / 256; //重新賦初值 10毫秒
TL0 = (65536 - 10000) % 256;
TR0 = 1; //重新打開定時器
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -