资源描述:
《飞思卡尔8位单片机mc9s0813程序lcd编程汇编程序例》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、13.3.1LCD编程汇编程序例(1)LCD编程汇编子程序LCD编程汇编子程序(LcdShow.asm)*[LCD引脚定义]LcdDataEQUPTB;Lcd显示数据传送口LcdData_DEQUDDRB;数据口方向寄存器LcdCtrlEQUPTC;Lcd控制信号传送口LcdCtrl_DEQUDDRC;控制口方向寄存器LcdRSEQU0;Lcd寄存器选择信号PTC0LcdRWEQU1;读写信号接PTC1LcdEEQU2;Lcd使能信号接PTC2*LCDShow:在HD44780显示屏上显示数据-------
2、-------------**功能描述:在HD44780显示屏上显示HX所指向的32个数据**入口:HX=待显示的数据**出口:无**堆栈深度:2+8+2=12**内部调用:InitLCD,LCDCommand**------------------以上为子程序说明-------------------*LcdShow:PSHA;保护AAIS#-!1;开辟临时变量JSRInitLcd;调用Lcd初始化子程序;显示第1行16个字符BCLRLcdRS,LcdCtrl;RS=0设置显示字符首DDRAM地址BCLR
3、LcdRW,LcdCtrl;R/W=0LDA#%10000000;后7位为DDRAM地址,=0x00JSRLcdCommandLDA#!16;临时变量初值=16(1行显示个数)STA!1,SPLcdShow1:BSETLcdRS,LcdCtrl;RS、R/W=10写数据到DDRAMBCLRLcdRW,LcdCtrlLDA,X;取待显示的数据JSRLcdCommandAIX#!1;指向下一个待显示的数据DBNZ!1,SP,LcdShow1;显示完毕?否,继续;显示第2行16个字符BCLRLcdRS,LcdCt
4、rl;RS=0设置显示字符首DDRAM地址BCLRLcdRW,LcdCtrl;R/W=0LDA#%11000000;后7位为DDRAM地址,=0x40JSRLcdCommandLDA#!16;临时变量初值=16(1行显示个数)STA!1,SPLcdShow2:BSETLcdRS,LcdCtrl;RS、R/W=10写数据到DDRAMBCLRLcdRW,LcdCtrlLDA,X;取待显示的数据JSRLcdCommandAIX#!1;指向下一个待显示的数据DBNZ!1,SP,LcdShow2;显示完毕?否,继续A
5、IS#!1;释放临时变量PULA;恢复ARTS*InitLcd:初始化Lcd(HD44780)----------------------------**功能描述:初始化Lcd(HD44780),设置显示方式,清屏,AC自动+1**入口:无**出口:无**堆栈深度:2+3+3=8**内部调用:LCDCommand**------------------------------------------------------*InitLcd:PSHH;保护HX、APSHXPSHALDA#%11111111;数
6、据口为输出STALcdData_DLDALCDCtrl_D;控制口低三位为输出ORA#%00000111STALCDCtrl_DBSETLcdE,LcdCtrl;进行LCD设置BCLRLcdRS,LcdCtrl;RS、R/W=00BCLRLcdRW,LcdCtrlLDA#%00111100;8位数据,2行显示,5*7点阵JSRLcdCommandLDA#%00001000;关显示,关光标显示,不闪烁JSRLcdCommandLDA#%00000001;清屏JSRLcdCommandLDHX#$03DF;等待
7、清屏完毕,时间>1.6msDelay2ms:;延时AIX#-1CPHX#0BNEDelay2msLDA#%00000110;AC自动增1,显示不移动,光标左移JSRLcdCommandLDA#%00010100;光标右移一个字符AC自动+1JSRLcdCommandLDA#%00001100;开显示,关光标显示,不闪烁JSRLcdCommandPULA;恢复HX、APULXPULHRTS*LcdCommand:执行A中的Lcd命令---------------------------**功能描述:执行A中的
8、Lcd命令,且延时**入口:A,存放指令码或数据**出口:无**堆栈深度:2+1=3**------------------------------------------------------*LcdCommand:PSHX;保护XLDX#$30;等待>40usDBNZX*STALcdData;A->LcdDataBSETLcdE,LcdCtrl;LcdE=1,为了获得E下降沿NOPNOPNOPBCLRLcd