搜索
bottom↓
回复: 0

汇编编写的1602驱动,PROTEUS仿真成功点亮

[复制链接]

出0入0汤圆

发表于 2012-5-25 23:44:31 | 显示全部楼层 |阅读模式
这段时间在学汇编,为了验证自己到底学了多少,于是用汇编的方式写个1602的显示驱动。
由于没有实物,只能用仿真,所以不敢保证在实物上也能正常工作。
初学汇编,不能像高手那样精简代码,程序也可能不完善,希望高手能指点一下,但是请不要指指点点。
因为是仿真,所以就没用“读忙”操作。代码如下(有点乱):
rs equ p2.0;                //定义接口,变量地址
rw equ p2.1;
en equ p2.2;
lcd equ p0;
cmd equ 0c0h;
dat equ 0c1h;
x equ  0c2h;
y equ  0c3h;
org 0000h;
ajmp start;
org 30h;
start: lcall delay;                //初始化
               mov cmd,#38h;
           lcall w_cmd;
           mov cmd,#0ch;
           lcall w_cmd;
           mov cmd,#06h;
           lcall w_cmd;
           mov cmd,#01h;
           lcall w_cmd;
loop: mov x,#00h;                 //显示数据
      mov y,#00h;
          mov dptr,#tab1;
          lcall display;
          mov x,#00h;
      mov y,#01h;
          mov dptr,#tab2;
          lcall display;
      sjmp $;
display:mov a,y;                  //判断哪一行显示
        cjne a,#01h,dis1;
            mov a,#0c0h;
        add a,x;
        mov cmd,a;
        sjmp dis2;
         dis1: mov a,#80h;
         add a,x;
         mov cmd,a;
         dis2:  lcall w_cmd;
          lcall w_dat;
         ret;
w_cmd:mov p2,#00h;                 //写命令call
            mov a,cmd;
             mov lcd,a;
          clr rs;
          lcall dims;
          clr rw;
          lcall dims;
          setb en;
          lcall dims;
          clr en;
          ret;
w_dat:       mov p2,#00h;        //写数据call
                 mov r5,x;
  da1:           mov a,r5;
          movc a,@a+dptr;
                   mov lcd,a;
          setb rs;
          lcall dims;
          clr rw;
          lcall dims;
          setb en;
          lcall dims;
          clr en;
          inc r5;
          cjne r5,#0fh,da1;
          ret;
dims:mov r7,#25;                           //延时5ms,晶振为12MHz
  di1:mov r6,#50;
   di2: djnz r6,di2;
        djnz r7,di1;
        ret;
                          
delay:mov r7,#100;                        //延时
   d1:mov r6,#100;
   d2: djnz r6,d2;
       djnz r7,d1;
           ret;
tab1: db 20h,57h,57h,57h,2eh,4fh,55h,52h,44h,45h;  //“www.ourdev.cn
      db 56h,2eh,43h,4eh,20h,20h;
tab2: db 20h,20h,4bh,65h,76h,69h,6eh,53h,74h,61h;  //"kevinstar888"
      db 72h,38h,38h,38h,20h,20h;
end;

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-24 00:23

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表