Advertisement
Alan468

Assembler v2

Jul 2nd, 2017
372
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ;; Licznik Pauza,random,reset,ukrywanie sek.+blink do parzystości
  2.  
  3. $INCLUDE (REG51.INC)
  4.  
  5. LED1            EQU     P3.7
  6. LED2            EQU     P3.6
  7. LED3            EQU     P3.5
  8. LED4            EQU     P3.4
  9.  
  10. OFF         EQU     P3.3
  11. LOAD            EQU     P3.2
  12. CLOCK           EQU     P3.1
  13. DANE            EQU     P3.0
  14.  
  15. SCL         EQU     P1.1
  16. SDA         EQU     P1.2
  17.  
  18. ENTER           EQU     P1.7
  19. DOWN            EQU     P1.6
  20. UP          EQU     P1.5
  21. ESCAPE          EQU     P1.4
  22.  
  23.  
  24.             ACALL   RESET_FUN
  25.  
  26. SHOW:
  27.  
  28.             JNB     DOWN ,RESET_COUNTER
  29.             SJMP    SKIP_RESET
  30. RESET_COUNTER:      ACALL   RESET_FUN
  31. SKIP_RESET:
  32.  
  33.  
  34.             JNB     UP ,FORCE_NUMS
  35.             SJMP    SKIP_FORCE_NUMS
  36. FORCE_NUMS:     ACALL   FORCE_NUMS_FUN
  37. SKIP_FORCE_NUMS:
  38.  
  39.  
  40. STOP_THIS_MADNES:   JNB     ESCAPE ,STOP_THIS_MADNES
  41.  
  42.             JNB     ENTER ,HIDE_SECONDS
  43.            
  44.  
  45.             ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; blinkanie led dla nieparzystych i parzystych sekund
  46.             ; Jak co z WPISU brać
  47.             MOV A, R5
  48.             RRC A
  49.             MOV LED1, C
  50.             CPL LED1
  51.            
  52.            
  53.             MOV A, R5
  54.             RRC A
  55.             MOV LED2, C
  56.            
  57.             ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  58.            
  59.             MOV A, R5
  60.             ACALL   WPIS
  61.  
  62.  
  63.             MOV A, R1
  64.             ACALL   WPIS
  65.            
  66.             SJMP    SKIP_HIDE_SECONDS
  67. HIDE_SECONDS:  
  68.  
  69.  
  70.             ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; blinkanie led dla nieparzystych i parzystych sekund
  71.             MOV A, R5
  72.             CPL     A
  73.             MOV R0, #8     
  74. NEXT22:
  75.             RLC A
  76.             DJNZ    R0, NEXT22
  77.            
  78.            
  79.             MOV LED1, C
  80.            
  81.            
  82.             MOV A, R5
  83.             MOV R0, #8     
  84. NEXT23:
  85.             RLC A
  86.             DJNZ    R0, NEXT23
  87.            
  88.            
  89.             MOV LED2, C
  90.            
  91.             ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  92.  
  93.  
  94.             MOV R5, #20
  95.             MOV A, R5
  96.             ACALL   WPIS
  97.  
  98.             MOV R1, #20
  99.             MOV A, R1
  100.             ACALL   WPIS
  101.            
  102. SKIP_HIDE_SECONDS:
  103.  
  104.  
  105.             MOV A, R2
  106.             ACALL   WPIS
  107.  
  108.             MOV A, R3
  109.             ACALL   WPIS
  110.  
  111.             CLR LOAD
  112.             SETB    LOAD
  113.             CLR OFF
  114.  
  115.             ACALL BIT_STARTU
  116.  
  117.             MOV A, #11010000B
  118.             ACALL WYSLIJ_BAJT
  119.             ACALL ACK
  120.  
  121.             MOV A, #00000000B
  122.             ACALL WYSLIJ_BAJT
  123.             ACALL ACK
  124.             ACALL BIT_STARTU
  125.             MOV A, #11010001B
  126.             ACALL WYSLIJ_BAJT
  127.             ACALL ACK
  128.  
  129.             ACALL   ODBIERZ_BAJT
  130.             MOV R4, A
  131.             ANL A, #00001111B
  132.             ADD A, #10
  133.             MOV R5, A
  134.  
  135.             MOV A, R4
  136.             ANL A, #11110000B
  137.             SWAP    A
  138.             ADD A, #10
  139.             MOV R1, A
  140.  
  141.             ACALL   NOACK
  142.             ACALL   BIT_STOPU
  143.  
  144.  
  145.  
  146.  
  147.             ACALL   BIT_STARTU
  148.  
  149.             MOV A, #11010000B
  150.             ACALL   WYSLIJ_BAJT
  151.             ACALL   ACK
  152.  
  153.             MOV A, #00000001B
  154.             ACALL   WYSLIJ_BAJT
  155.             ACALL   ACK
  156.  
  157.             ACALL   BIT_STARTU
  158.             MOV A, #11010001B
  159.             ACALL   WYSLIJ_BAJT
  160.             ACALL   ACK
  161.  
  162.             ACALL   ODBIERZ_BAJT
  163.             MOV R4, A
  164.             ANL A, #00001111B
  165.             MOV R2, A
  166.  
  167.             MOV A, R4
  168.             ANL A, #11110000B
  169.             SWAP    A
  170.             ADD A, #10
  171.             MOV R3, A
  172.  
  173.             ACALL   NOACK
  174.             ACALL   BIT_STOPU
  175.  
  176.  
  177.             LJMP    SHOW
  178.            
  179. WPIS:
  180.             MOV DPTR, #TABLICA
  181.             MOVC    A, @A + DPTR
  182.             MOV R0, #8
  183.  
  184. NEXT:
  185.             RRC A
  186.             MOV DANE, C
  187.             CLR CLOCK
  188.             SETB    CLOCK
  189.             DJNZ    R0, NEXT
  190.             RET
  191.  
  192. BIT_STARTU:
  193.             SETB    SDA
  194.             SETB    SCL
  195.             CLR SDA
  196.             CLR SCL
  197.             RET
  198.  
  199. BIT_STOPU:
  200.             CLR SDA
  201.             CLR SCL
  202.             SETB    SCL
  203.             SETB    SDA
  204.             RET
  205.  
  206. WYSLIJ_BAJT:
  207.             MOV R0, #8
  208.  
  209. SLOOP:
  210.             RLC A
  211.             MOV SDA, C
  212.             SETB    SCL
  213.             CLR SCL
  214.             DJNZ    R0, SLOOP
  215.             RET
  216.  
  217. ODBIERZ_BAJT:
  218.             SETB    SDA
  219.             MOV R0, #8
  220. RLOOP:
  221.             MOV C, SDA
  222.             RLC A
  223.             SETB    SCL
  224.             CLR SCL
  225.             DJNZ    R0, RLOOP
  226.             RET
  227.  
  228. ACK:
  229.             SETB SDA
  230. BACK:
  231.             JB  SDA, BACK
  232.             SETB    SCL
  233.             CLR SCL
  234.             RET
  235.  
  236. ACKP:
  237.             CLR SDA
  238.             SETB    SCL
  239.             CLR SCL
  240.             RET
  241.  
  242. NOACK:
  243.             SETB    SDA
  244.             SETB    SCL
  245.             CLR SCL
  246.             RET
  247.  
  248.  
  249. RESET_FUN:     
  250.             MOV R0, #10
  251.             MOV R1, #10
  252.             MOV R2, #0
  253.             MOV R3, #10
  254.             MOV R4, #0
  255.             MOV R5, #10
  256.            
  257.             ACALL   BIT_STARTU
  258.  
  259.             MOV A, #11010000B
  260.             ACALL   WYSLIJ_BAJT
  261.             ACALL   ACK
  262.  
  263.             MOV A, #00000000B
  264.             ACALL   WYSLIJ_BAJT
  265.             ACALL   ACK
  266.  
  267.             MOV A, #00000000B
  268.             ACALL   WYSLIJ_BAJT
  269.             ACALL   ACK
  270.  
  271.             ACALL   NOACK
  272.             ACALL   BIT_STOPU
  273.  
  274.             ACALL   BIT_STARTU
  275.  
  276.             MOV A, #11010000B
  277.             ACALL   WYSLIJ_BAJT
  278.             ACALL   ACK
  279.  
  280.             MOV A, #00000001B
  281.             ACALL   WYSLIJ_BAJT
  282.             ACALL   ACK
  283.  
  284.             MOV A, #00000000B
  285.             ACALL WYSLIJ_BAJT
  286.             ACALL ACK
  287.  
  288.             ACALL NOACK
  289.             ACALL BIT_STOPU
  290.            
  291.             RET
  292.  
  293.  
  294. FORCE_NUMS_FUN:    
  295.             MOV A, #10
  296.             ACALL   WPIS
  297.             MOV A, #11
  298.             ACALL   WPIS
  299.             MOV A, #12
  300.             ACALL   WPIS
  301.             MOV A, #13
  302.             ACALL   WPIS
  303.  
  304.             CLR LOAD
  305.             SETB    LOAD
  306.             CLR OFF
  307. ASD:            JNB P1.5 ,ASD
  308.  
  309.             RET
  310.  
  311. TABLICA:
  312.             DB  040H    ;0  "0."
  313.             DB  079H    ;1  "1."
  314.             DB  024H    ;2  "2."
  315.             DB  030H    ;3  "3."
  316.             DB  019H    ;4  "4."
  317.             DB  012H    ;5  "5."
  318.             DB  002H    ;6  "6."
  319.             DB  078H    ;7  "7."
  320.             DB  000H    ;8  "8."
  321.             DB  010H    ;9  "9."
  322.             DB  0C0H    ;10 "0"
  323.             DB  0F9H    ;11 "1"
  324.             DB  0A4H    ;12 "2"
  325.             DB  0B0H    ;13 "3"
  326.             DB  099H    ;14 "4"
  327.             DB  092H    ;15 "5"
  328.             DB  082H    ;16 "6"
  329.             DB  0F8H    ;17 "7"
  330.             DB  080H    ;18 "8"
  331.             DB  090H    ;19 "9"
  332.             DB  0FFH    ;20 PUSTE MIEJSCE
  333.             DB  0BFH    ;21 "-"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement