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

📄 jiema_user.c

📁 这里有很多我自己做的凌阳单片机源程序
💻 C
字号:
//jiema_user:解码用户层程序
//测试成功,计数结果为1296(左右)时则可认为是引导码的开始
//若计数结果为108左右则认为是'0'码
//若计数结果为210左右则认为是'1'码
//若计数结果为1104左右则认为是连发代码,舍弃
//根据测试的计数次数判断为0和1吗
#include<spce061a_chf.h>
#include"bit.h"
#include"jiema_user.h"
int num[34]={0};
extern flag;
//初始化函数--包括IO口和中断的初始化
void init_jiema(void)
{
	PB_Dir->bit.bit2=0;
	PB_Attrib->bit.bit2=1;
	P1_2=1;//EXT1中断口为悬浮式输入
	
	//时钟的设置
	*P_SystemClock=clock_A;//24.576--24.576/8
	//定时器时钟的设置
	Set_TimerA_Data(start_dataA);//定时器A从0开始计数
	Set_TimerA_Ctrl(stopA);//开始先不计数
	//设置中断
	*P_INT_Ctrl=jiema_INT;//开IRQ3_EXIT1中断
	//开中断
	asm("irq on");
}
//要在全部译完码才进行解码
unsigned int jiema_value(void)
{
	unsigned int system_code=0,system_ncode=0;//定义系统码和系统反码
	unsigned int user_code=0,user_ncode=0;//定义用户码和用户反码
	unsigned int jiema_i;
	if((flag==34)&(num[1]>1200))//flag==0认为解码结束,而num[1]>1200认为引导码解码正确,可以译码
	{
		for(jiema_i=2;jiema_i<34;jiema_i++)
		{
			if((200<num[jiema_i])&(jiema_i<250))
			{
				num[jiema_i]=1;
			}
			else if((80<num[jiema_i])&(jiema_i<130))
			{
				num[jiema_i]=0;
			}
			if(jiema_i<=9)
			{
				system_ncode<<=1;
				system_ncode|=num[jiema_i];
			}
			else if((9<jiema_i)&(jiema_i<=17))
			{
				system_code<<=1;
				system_code|=num[jiema_i];
			}
			else if((17<jiema_i)&(jiema_i<=25))
			{
				user_ncode<<=1;
				user_ncode|=num[jiema_i];
			}
			else 
			{
				user_code<<=1;
				user_code|=num[jiema_i];
			}
		}
		//jiema_i=system_code+systen_ncode;
		if(((system_code+system_ncode)==0xff)==((user_code+user_ncode)==0xff))//说明解码正确
		{
			return user_code;//返回用户码
		}
		else 
		{
			return err;//否则返回错误的信息
		}
	}
	else 
	{
		return err;
	}
}

⌨️ 快捷键说明

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