基于AM-209M芯片的视频16画面分割器

[10-10 20:38:44]   来源:http://www.88dzw.com  电子制作   阅读:8555

文章摘要:有键按下时,P2.7变为0。P2.6发送串行数据0XFE到74LS164,若此时P2.7输入仍为0,则表示SW1键已按下(见图5);否则0XFE左移1位(即0xFD),若P2.7输入仍为0,则表示SW2键已按下;依此类推…,否则0XFE左移7位(即0X7F),若此时P2.7输入为0,则表示SW8键按下。左读取键值并释放按键后,系统会点亮LED以指示键按下。例如,当SW1按下再释放后,P2.6发送数据0XFE,此时P2.4置为0,将点亮D501以指示SW1按下。键盘扫描子程序如下://键盘扫描子程序,键值保存在key_value中sbit led_on=P2^4; //LED点亮使能,低有效sb

基于AM-209M芯片的视频16画面分割器,标签:电子小制作,http://www.88dzw.com
有键按下时,P2.7变为0。P2.6发送串行数据0XFE到74LS164,若此时P2.7输入仍为0,则表示SW1键已按下(见图5);否则0XFE左移1位(即0xFD),若P2.7输入仍为0,则表示SW2键已按下;依此类推…,否则0XFE左移7位(即0X7F),若此时P2.7输入为0,则表示SW8键按下。左读取键值并释放按键后,系统会点亮LED以指示键按下。例如,当SW1按下再释放后,P2.6发送数据0XFE,此时P2.4置为0,将点亮D501以指示SW1按下。键盘扫描子程序如下:

//键盘扫描子程序,键值保存在key_value中

sbit led_on=P2^4; //LED点亮使能,低有效

sbit key_clk=P2^5; //串行移位时钟

sbit shift_data=P2^6; //移位数据输入

sbit scan_data=P2^7; //键扫描数据输入

void Key_read_service()

{

uchar temp,temp1,temp2;

uchar i,j;

Key_flag=0; //键标志清零

scandata=1;

led_on=1; //关闭LED

for(i=0;i<8;i++) //74LS164并行输出置为0

{

shift_data=0;

_nop_();

key_clk=0;

_nop_();

key_clk=1;

}

if(scandata= =0)

{ //有键按下

temp=0xfe;

for(j=0;j<8;j++) //发送8个数据字节

{

temp1=temp;

temp2=~temp;

for=(i=0;i<8;i++)//串行移位1个字节

{

if(temp1 & 0x80==0x80)

shift_data=1;

else

shift_data=0;

_nop_();

key_clk=0;

_nop_();

key_clk=1;

}

delay_10ms();//延时10ms去抖

if(scandata==0)//再次判断是否按键?

{ //键有效

key_value=temp2;//存储值

key_flag=1;//置键有效标志位

break;

}

temp2=temp2<<1;//不是当前键按下

temp=~temp2; 按下,左移一位判断下一个键

}

}

}

上一页  [1] [2] [3] [4] 


Tag:电子制作电子小制作维修教程知识 - 电子制作

《基于AM-209M芯片的视频16画面分割器》相关文章