Advertisement
Alan468

Assembler Licznik Reset_HideSec_Random_Hold

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