📄 通用菜单模.txt
字号:
用【 小 | 中 | 大 】字体浏览
C51编程:ASM中的模块设计 [craft] [43次] 01-10-26 下午 08:52:58
设计一通用菜单模块,在更换液晶屏和显示不同的菜单内容时,不要更换程序,只需调换相
应的液晶驱动和重写菜单结构。
;菜单操作模块名
;Menu
;输入参数:DPTR=表达菜单的数据结构
;------------------------------------------------
;下列参数由液晶屏驱动模块传递
;调用参数:DisplayColumNums液晶屏一行字节数
;调用参数:DisplayStrinNums液晶屏一列字节数
;调用参数:MenuMenuDisplayLine液晶屏可显示的菜单行数
;输出:根据选择的菜单条转入相应的处理程序,处理完后返回本程序
;MenuMenuDisplayLine EQU 7
;---------------------------------------------------------------------
;表达菜单表的结构如下
;*******************************************************************************
***********
;SysManMenu: DW MenuLength,SysManItemTab,SysManProg,SysManMode
;菜单结构名,第一个字为菜单长度存放单元,第二个字为菜单内容集合存放单元
;第三字为菜单出口程序集合存放单元,第四字节为模式菜单(1)还是非模式菜单(0)
;---------------------------------------------------------------------
;MenuLength: DB 7
;菜单内容的长度
;----------------------------------------------------------------------
;SysManItemTab: DW SysManItemS0,SysManItemS1,SysManItemS2
; DW SysManItemS3,SysManItemS4,SysManItemS5
; DW SysManItemS6,SysManItemS7
;菜单内容集合
;-------------------------------------------------------------------------
;SysManItemS0: DB $ 系统管理菜单$
;菜单标题,以0,0坐标开始显示,最大长度为DisplayColumNums液晶屏一行字节数/2个汉字
;SysManItemS1: DB $ 液晶灰度调节$
;SysManItemS2: DB $ 时间设置$
;SysManItemS3: DB $单人工作时间查看$
;SysManItemS4: DB $单人工作时间清零$
;SysManItemS5: DB $ 行走控制$
;SysManItemS6: DB $ 保存小时计$
;SysManItemS7: DB $ 模拟报警$
;菜单项,以2,16坐标为起始坐标,最大长度为DisplayColumNums液晶屏一行字节数/2-2
;个汉字里面空格等应用全角方式输入
;-------------------------------------------------------------------------
;SysManProg: DW PR1,PR2,PR3,PR4,PR5,PR6,PR7
;相应菜单项的出口程序地址集合
;---------------------------------------------------------------
;SysManMode: DB 1
;为模式菜单(1)还是非模式菜单
;为模式菜单时,执行了菜单命令后仍回到菜单中
;为非模式菜单时,招待了菜单命令后同时退出菜单
;***************************************************************************
MENUPRG SEGMENT CODE
;包含图形处理、键处理和通用程序模块
$NOLIST
$INCLUDE (GRAPIC.H)
$INCLUDE (KEY.H)
$INCLUDE (NOR.H)
$LIST
PUBLIC MENU
;液晶屏可显示的菜单行数,以1为起始值,菜单模块用
MenuMenuDisplayLine EQU 7
RSEG MENUPRG
;*************************菜单操作模块*************************
;*输入参数:DPTR=表达菜单的表, *
;*------------------------------------------------ *
;*调用参数:DisplayColumNums液晶屏一行字节数 *
;*调用参数:DisplayStrinNums液晶屏一列字节数 *
;*调用参数:MenuMenuDisplayLine液晶屏可显示的菜单行数 *
;*输出:根据选择的菜单条转入相应的处理程序,处理完后返回本程序 *
;*注:R0为显示的第一条菜单号,以00为起始值 *
;* R1为菜单行号,以00为起始值 *
;* R3为菜单总长度,以1为起始值 *
;* R2为光标号,以0为起始值 *
;* MenuMenuDisplayLine为液晶屏可显示的菜单行数,以1为起始值 *
;*------------------------------------------------- *
;*调用模块:查表模块,文本图形处理模块 *
;*MenuMenuDisplayLine EQU 7 *
;**************************************************************
Menu:
....
RET
在应用程序中显示菜单:
.......
MOV DPTR , #SysManMenu
LCALL MENU
......
点击这里回复这篇贴子>>
_____________________________________________________________________________
Copyright?,C51BBS论坛 2000-2002
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -