Advertisement
Alan468

Licznik Pauza,random,reset,ukrywanie sek.+blink do parzystoś

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