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

📄 ceshi.c

📁 这里有很多我自己做的凌阳单片机源程序
💻 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 + -