Advertisement
Guest User

Untitled

a guest
Aug 18th, 2017
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ;======= interrupt vectors =====================
  2.     LJMP START
  3. ORG 03h
  4.     LJMP INT0INT    ;INT0
  5. ORG 0Bh
  6.     LJMP T0INT      ;T0INT
  7. ORG 13H
  8.     LJMP INT1INT    ;INT1
  9. ORG 1BH
  10.     LJMP T1INT      ;T1INT
  11. ORG 23h
  12.     LJMP SERINT     ;SERINT
  13. ORG 30H
  14. ;============== variables ==========
  15. line01  data    20h
  16. line23  data    21h
  17. ;============== interrupts vectors ==========
  18. INT0INT:
  19.     reti
  20. INT1INT:
  21.     reti
  22. T0INT:
  23.     reti
  24. T1INT:
  25.     reti
  26. SERINT:
  27.     reti
  28. ;============== util procedures ==========
  29. ;==== DELAY1MS ==== wait 1 ms
  30. ;work only with 0 bank!!! NOT SAVE REGISTERS!!!
  31. DELAY1MS:
  32.     MOV R2,#28                          ;\28 times
  33. LREX:                                   ;|
  34.     MOV R1,#16                          ;   \16 times
  35.     DJNZ R1,$                           ;   /
  36.     DJNZ R2,LREX                        ;/
  37.     MOV R2,#6                           ;\6 times
  38.     DJNZ R2,$                           ;/
  39.     RET
  40. ;==== DELAY ==== wait a R0 ms time
  41. DELAY:
  42.     PUSH PSW
  43.     push 1
  44.     push 2
  45. DELAY_LOOP:
  46.     CALL DELAY1MS
  47.     DJNZ ACC,DELAY_LOOP
  48.     pop 2
  49.     pop 1
  50.     POP PSW
  51.     RET
  52. ;============== scan keyboard ============
  53. scankeyb:
  54.     push a
  55.     push 7
  56.     mov p1,#0EFh
  57.     mov a,p1
  58.     anl a,#0Fh
  59.     swap A
  60.     mov r7,a
  61.     mov p1,#0DFh
  62.     mov a,p1
  63.     anl a,#0Fh
  64.     orl a,r7
  65.     mov line01,a
  66.    
  67.     mov p1,#0BFh
  68.     mov a,p1
  69.     anl a,#0Fh
  70.     swap a
  71.     mov r7,a
  72.     mov p1,#07Fh
  73.     mov a,p1
  74.     anl a,#0Fh
  75.     orl a,r7
  76.     mov line23,a
  77.     pop 7
  78.     pop a
  79.     ret
  80. ;--------------------------------------
  81. ComWR:
  82.     mov p2, #0FFh
  83.     mov r0, #0F0h
  84.     anl a,#0F0h
  85.     movx @r0, A
  86.     ret
  87. ;--------------------------------------
  88. DataWR:
  89.     push acc
  90.     mov p2, #0FFh
  91.     mov r0, #0F1h
  92.     orl a,#0Fh 
  93.     movx @r0, A
  94.     pop acc
  95.     swap a
  96.     nop
  97.     nop
  98.     nop
  99.     nop
  100.     nop
  101.     nop
  102.     nop
  103.     nop
  104.     orl a,#0Fh
  105.     movx @r0, A
  106.     mov a,#40
  107.     djnz acc,$
  108.     ret
  109. ;--------------------------------------
  110. Wait:
  111.     mov A, #125
  112. Again1:
  113.     push ACC
  114.     clr A                      
  115. Again0:
  116.     dec A                      
  117.     jnz Again0
  118.     pop ACC
  119.     dec A
  120.     jnz Again1
  121.     ret
  122. ;--------------------------------------
  123. LCD_Init:
  124.     push ACC
  125.     mov p2, #0FFh
  126.     mov r0, #0F0h
  127.    
  128.     mov a,#15
  129.     call delay
  130.    
  131.     mov A,#30h
  132.     call ComWR
  133.     mov a,#15
  134.     call delay
  135.    
  136.     mov A,#30h
  137.     call ComWR
  138.     mov a,#15
  139.     call delay
  140.    
  141.     mov A,#30h
  142.     call ComWR
  143.     mov a,#15
  144.     call delay
  145.    
  146.     mov A,#20h
  147.     call ComWR
  148.     mov a,#15
  149.     call delay
  150.    
  151.     mov A,#20h
  152.     call ComWR
  153.     nop
  154.     nop
  155.     nop
  156.     nop
  157.     mov A,#80h
  158.     call ComWR
  159.     mov a,#15
  160.     call delay
  161.    
  162.     mov A,#00h
  163.     call ComWR
  164.     nop
  165.     nop
  166.     nop
  167.     nop
  168.     mov A,#0C0h
  169.     call ComWR
  170.     mov a,#15
  171.     call delay
  172.    
  173.     mov A,#00h
  174.     call ComWR
  175.     nop
  176.     nop
  177.     nop
  178.     nop
  179.     mov A,#10h
  180.     call ComWR
  181.     mov a,#15
  182.     call delay
  183.    
  184.     mov A,#00h
  185.     call ComWR
  186.     nop
  187.     nop
  188.     nop
  189.     nop
  190.     mov A,#60h
  191.     call ComWR
  192.     mov a,#15
  193.     call delay
  194.  
  195.    
  196.     pop ACC
  197.     ret
  198. ;--------------------------------------
  199. pr_null:
  200.     jz pnull
  201.     mov A,#'1'
  202.     call DataWR
  203.     ret
  204. pnull: 
  205.     mov A,#'0'
  206.     call DataWR
  207.     ret
  208. print_bool:
  209.     mov b,a
  210.     mov a,b
  211.     anl a,#80h
  212.     call pr_null
  213.     mov a,b
  214.     anl a,#40h
  215.     call pr_null
  216.     mov a,b
  217.     anl a,#20h
  218.     call pr_null
  219.     mov a,b
  220.     anl a,#10h
  221.     call pr_null
  222.     mov a,b
  223.     anl a,#08h
  224.     call pr_null
  225.     mov a,b
  226.     anl a,#04h
  227.     call pr_null
  228.     mov a,b
  229.     anl a,#02h
  230.     call pr_null
  231.     mov a,b
  232.     anl a,#01h
  233.     call pr_null
  234.     ret
  235. ;--------------------------------------
  236. print_asciiz:
  237. m1:
  238.     mov a,#0
  239.     movc A,@A+DPTR
  240.     jz m2
  241.     call DataWR
  242.     mov a,#15
  243.     call delay
  244.     inc DPTR
  245.     jmp m1
  246. m2:
  247.     ret
  248. ;--------------------------------------
  249. getkey:
  250.  
  251.     call scankeyb
  252.     ret
  253. ;======================== main ====================
  254. START:
  255.     MOV SP,#70H
  256.     mov DPTR,#0FFF0h
  257.     mov a,#0FFh
  258. m01:
  259.     ;movx @DPTR,A
  260.     ;jmp m01
  261.     ;call wait
  262.    
  263.     SETB SM0                            ;mode 2
  264.     MOV PCON,#80h                       ;set SMOD (x2 baudrate)
  265.    
  266.     MOV A,#30h
  267.     MOV SBUF,A
  268.     JNB TI,$
  269.     CLR TI
  270.    
  271.     call LCD_Init
  272.    
  273.     MOV A,#31h
  274.     MOV SBUF,A
  275.     JNB TI,$
  276.     CLR TI
  277.    
  278.     mov DPTR,#str1
  279.     call print_asciiz
  280.    
  281.     MOV A,#32h
  282.     MOV SBUF,A
  283.     JNB TI,$
  284.     CLR TI
  285.    
  286.     jmp $
  287. inf:
  288.    
  289.     ;mov a,#80h
  290.     ;call ComWR
  291.     ;mov a,#00h
  292.     ;call ComWR
  293.     call scankeyb
  294.     ;mov a,line01
  295.     ;call print_bool
  296.     ;mov a,line23
  297.     ;call print_bool
  298.     mov a,#250
  299.     call delay
  300.     sjmp inf
  301.    
  302. ORG 0f00h
  303. str1:
  304.     db "VelocityVelocityVelocityVelocityVelocityVelocityVelocityVelocityVelocityVelocity",0
  305. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement