⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 p1lcd.asm

📁 一个基于51单片机的报警系统。包含有电路图
💻 ASM
字号:
D_PORT  EQU P0
RS      EQU P1.6
RW      EQU P1.7
E       EQU P3.5
BF      EQU ACC.7
_RD     EQU P3.7
_WR     EQU P3.6
LKEY    EQU P1.3
MKEY    EQU P1.4
RKEY    EQU P1.5
Y0      EQU P2.5

org 0000h
ljmp 0100h


org 0100h
START:
      MOV       SP,#30h
      lcall     init_lcm
      mov       r7,#10000000b
      mov       dptr,#string1
      lcall     put_string
ww:
      JNB LKEY,SCREEN1
      ljmp      ww
SCREEN1:
        lcall SCREEN2
string1:
        DB      "2006/12/31/08:30  湘潭大学研制    集成警务系统  密码门",0
string2:
        DB      "2003/12/30 08:33    系统密码:                   确认  选择  移动",0

put_string:
           mov  a,r7
           orl  a,#80h
           mov  r7,a
           lcall    write_command
disp_str_loop:
              mov       a,#0
              movc      a,@a+dptr
              cjne      a,#0,cont_str_disp
              ret
cont_str_disp:
              mov       r7,a
              lcall     write_data
              inc       dptr
              sjmp      disp_str_loop
init_lcm:
         mov    r6,#0
         mov    r7,#43
         lcall  delay_ms
         mov    r7,#00110000b
         lcall  write1_command

         mov    r6,#0
         mov    r7,#1
         lcall  delay_us

         mov    r7,#00110000b
         lcall  write1_command

         mov    r6,#0
         mov    r7,#1
         lcall  delay_us

         mov    r7,#00001111b
         lcall  write_command

         mov    r6,#0
         mov    r7,#1
         lcall  delay_us
         mov    r7,#00000001b
         lcall  write_command

         mov    r6,#0
         mov    r7,#12
         lcall  delay_ms

         mov    r7,#00000110b
         lcall  write_command
         ret
wait_free:
          push  acc
          mov   P0,#0FFH
          clr   RS
          setb  RW
loop_busy:
          setb  E
          mov   a,P0
          clr   E
          jb    BF,loop_busy
          clr   RS
          clr   RW
          pop   acc
          ret

write_command:
             lcall      wait_free
write1_command:
              clr       RS
              clr       RW
              setb      E
              mov       D_PORT,r7
              clr       E
              ret

write_data:
          lcall wait_free
          setb  RS
          clr   RW
          setb  E
          mov   D_PORT,r7
          clr   E
          ret
SCREEN2:
      MOV R7,#00000001B
      LCALL  write_command
      mov       dptr,#string2
      lcall     put_string
      CLR       Y0
      mov r7,#10010110b
      lcall write_command
      mov r7,#00110000b
      MOV R1,#28H
      mov r6,#00110000b
      lcall write_data
      mov r7,#00011000b
      lcall write_command
SC1:
      jnb MKEY,SELNUM
      JNB RKEY,NEXT
      JNB LKEY,ENTER
      JMP SC1
SELNUM:
      INC r6
      mov a,r6
      MOV r7,a
      LCALL write_data
      mov r7,#0001110b
      lcall write_command
      RET
NEXT:
      mov a,r6
      MOV @r1,a
      INC r1
      MOV r7,#00011100B
      LCALL write_command
      MOV r6,#00110000B
      mov r7,#00110000b
      lcall write_data
      mov r7,#00011100b
      lcall write_command
      ret
ENTER:
      ljmp      $


delay_ms:
         nop
   delay:
         mov    acc,#125
   del:
         nop
         nop
         djnz   acc,del
         djnz   r7,delay
         mov    a,r6
         jz     exit
         djnz   r6,delay
   exit:
         ret

delay_us:
         nop
 delayus:
         mov    acc,#13
   delus:
         nop
         nop
         djnz   acc,delus
         djnz   r7,delayus
         mov    a,r6
         jz     exitus
         djnz   r6,delayus
 exitus:
         ret


        END

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -