久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
AVR多級菜單調試通過
[打印本頁]
作者:
william3521
時間:
2019-6-2 23:18
標題:
AVR多級菜單調試通過
#include <iom8515v.h>
#include <LCD1602.h>
#include <timer.h>
#include <key.h>
volatile unsigned int time_10ms_ok = 0;
void LED1ON(void)
{
PORTD |= BIT(0);
}
void NullSubs(void) //空函數
{ }
struct MenuItem MainMenu[6] = //結構體主菜單
{
{6,"1.fingerprint",&LED1ON,fingerprint,&Null},
{6,"2.password set",&NullSubs,password,&Null},
{6,"3.IC card set",&NullSubs,fingerprint,&Null},
{6,"4.telecontrol",&NullSubs,fingerprint,&Null},
{6,"5.system set",&NullSubs,fingerprint,&Null},
{6,"6.rec inquire",&NullSubs,fingerprint,&Null},
};
struct MenuItem fingerprint[4] = //子菜單
{
{4,"1.add fp",&NullSubs,&Null,MainMenu},
{4,"2.del fp",&NullSubs,&Null,MainMenu},
};
struct MenuItem password[4] = //子菜單
{
{4,"1.add password",&NullSubs,&Null,MainMenu},
{4,"2.del password",&NullSubs,&Null,MainMenu},
};
struct MenuItem (*MenuPoint) = MainMenu;
void ShowMenu(void)
{
unsigned char i = 0;
MaxItems = MenuPoint[0].MenuCount; //獲取當前菜單的條目數
DisplayPoint = DisplayStart; //顯示菜單的編號
if( MaxItems > LCD1602_Max_Display_Line ) //如果大于能顯示的菜單數做處理
{
for ( i = 0;i < LCD1602_Max_Display_Line;i++ )
{
LCD_puts(1,i,MenuPoint[DisplayPoint].DisplayString);//2行分別顯示兩個菜單
if ((DisplayPoint) == (UserChoose))
{
LCD_putc(0,0,0x7e); //寫小箭頭
}
else
{
LCD_putc(0,i,' '); //寫空格
}
DisplayPoint += 1; //字符串偏移量+1
if ((DisplayPoint) == (MaxItems))
{
DisplayPoint = 0;
}
}
}
}
void ExcuteMenu(void)
{
unsigned char GetKeyNum;
if (time_10ms_ok)
{ //確定有功能按鍵被按下的情況下才執行其功能
time_10ms_ok = 0;
GetKeyNum = key_driver();
if((GetKeyNum == 1)||(GetKeyNum == 2))
{
switch (GetKeyNum)
{
case S_key://短按鍵
UserChoose++;
if (UserChoose == MaxItems)
{
UserChoose = 0;//當用戶的選擇數大于最大菜單數量,則選定的清零到第一個
}
GetKeyNum=0;
break;
case L_key: //長按鍵
if (MenuPoint[UserChoose].ChildrenMenus != &Null)
{
MenuPoint=MenuPoint[UserChoose].ChildrenMenus; //指向子菜單
SavePoint=UserChoose; //顯示菜單的編號
UserChoose=0;
DisplayStart=0;
}
else if (MenuPoint[UserChoose].ParentMenus != &Null)
{
MenuPoint= MenuPoint[UserChoose].ParentMenus; //指向父菜單
UserChoose= 0;
DisplayStart= SavePoint-1;
UserChoose= SavePoint; //恢復先前的菜單
}
if ((MenuPoint[UserChoose].Subs)!= NullSubs)
{
(*MenuPoint[UserChoose].Subs)();
}
GetKeyNum=0;
break;
default: break;
}
//*--------------------------------------------------------------------
//*菜單循環處理
if ((UserChoose < DisplayStart) || (UserChoose >= (DisplayStart + 1 )))
{
DisplayStart = UserChoose;
}
write_com(0x01);
delay_nms(3);
ShowMenu();
}
}
}
void main(void)
{
DDRB=0xff; //B口為輸出
DDRD=0x7f;
PORTD=0x80;
TCNT1H=0xD8;
TCNT1L=0xF0;
TCCR1B=0x02;
TIMSK=0x80; // 允許中斷
SEI();
init_LCD();
ShowMenu();
while(1)
{
ExcuteMenu();
}
}
#pragma interrupt_handler timer1:7
void timer1(void)
{
time_10ms_ok=1;
TCNT1H=0xD8;
TCNT1L=0xF0;
TIMSK=0x80;
}
作者:
admin
時間:
2019-6-3 00:31
本帖需要重新編輯補全電路原理圖,源碼,詳細說明與圖片即可獲得100+黑幣(帖子下方有編輯按鈕)
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
成人av网站在线观看
|
午夜免费观看网站
|
精品在线一区二区
|
99久久99热这里只有精品
|
国产一区二区三区四区
|
国产精品av久久久久久久久久
|
亚洲 欧美 激情 另类 校园
|
亚洲综合首页
|
久久婷婷av
|
国产精品一二三区
|
日韩视频在线一区二区
|
欧美一区二区三区视频在线
|
国产91丝袜在线18
|
91大神在线资源观看无广告
|
情侣酒店偷拍一区二区在线播放
|
久久久久久国产精品
|
婷婷在线视频
|
欧美1区
|
久久久久久国产
|
91看片网
|
日韩高清黄色
|
久久久蜜桃一区二区人
|
久久久久久久国产精品影院
|
福利精品在线观看
|
国产精品178页
|
中文字字幕在线中文乱码范文
|
亚洲视频一区二区三区
|
成人午夜影院
|
中文字幕精品视频
|
国产精品一区二区三区久久久
|
免费在线观看成人
|
午夜视频在线免费观看
|
精品少妇一区二区三区日产乱码
|
成人午夜视频在线观看
|
做a视频
|
欧美色综合一区二区三区
|
日本一二三区电影
|
午夜一区二区三区在线观看
|
一区二区三区免费
|
亚洲欧洲精品一区
|
久久国产一区
|