从头学玩单片机STC15F104W《六》读取FD650B的按键码(中九接收机屏)
编辑时间:2022-05-31 作者:金满斗 浏览量:813 来源:原创

本来这篇文章是没有准备写的。

本来是想最终做个遥控解码器的,因为按键,接收头都是现成的,中九里面。

结果遇到了一些问题,干脆分门别类的一个个试吧。刚好把外部中断也学习了。

电路图见上篇。

像这种报错很多都是空间不够,芯片空间不够造成的。

不多说了,直接上代码吧。就主文件里的,因为分散到各个别的文件了,看起来东西就很少。


/********************************************************************
日    期:2022/05/28
功    能: 读取点亮由FD650Bic驱动的电子屏的按键码显示到屏上,这里用到了模块化开发    芯片型号STC15F104W	  
编    写:劲松电脑通讯	 www.jvbaopeng.com
*/
#include <fd650.h>
MS_U8 G_num = 0;   //全局数字
MS_U8 readint = 0;


void read650KEY(void){
	int num ;
	num = MDrv_FD650_Read();
	if(num!=0){
    	G_num = num;
		readint = 0;
	}
}


void ET_0() interrupt 1 using 1                //定时器0中断
{	
	readint++;     //没事瞎玩,让扫描按键和屏显示省资源  
}

void EX_0() interrupt 0                //外部中断0,按键按了就中断下
{
	LED1 = ~LED1;	  //简单的灯开关
	G_num++;
        
}

void ET0_init()                //定时器0中断初始化
{
		TMOD=0x02;                //定时器0工作在方式2
        TH0=0x00;                //重载值
        TL0=0x00;                //初始值
        ET0=1;                //开启定时器0中断
        TR0=1;
}

void EX0_init()                //外部中断0初始化
{
        IT0=1;                //设置外部中断0为下降沿触发
        EX0=1;                //开启外部中断0
        EA=1;                //开启总中断
}


void main()
{
		int mm = 0;
		MDrv_FrontPnl_Update((MS_U8*)" OFF",0);	   //来个初始显示,可以直接显示字符串的,传入文本指针
        ET0_init();
		EX0_init();
        LED1 = 0;
        while(1)
        {	  
		   if(readint>50){	    //这样隔断时间扫描下按键是不是相对省资源点
		   		read650KEY();
           		MDrv_FrontPnl_Update(mystring(G_num), 0);
				readint = 0;
		   }  
        }
}
开源了,代码见 https://gitee.com/jvbaopen/stc_demo


来说两句吧