Advertisement
Guest User

Untitled

a guest
Jan 29th, 2020
247
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.  
  2. CSKB0 xDATA 21h             ; klawiatura matrycowa: klawisze 0...7
  3. CSKB1 xDATA 22h             ; klawiatura matrycowa: klawisze 8...
  4.  
  5. LCDWC xDATA 0FF80h          ; HD44780 - wpis rozkazów
  6. LCDWD xDATA 0FF81h          ; HD44780 - wpis danyc
  7. LCDRC xDATA 0FF82h          ; HD44780 - odczyt stanu
  8. LCDRD xDATA 0FF83h          ; HD44780 - odczyt danyh
  9.  
  10. STRING DATA 042h            ; offset napisu do wyswietlenia przez LCD
  11.  
  12. STATE DATA 050h             ; informacje o stanie programu
  13.  
  14. T0_VAL_INIT EQU 65535 - 9215
  15. TH0_INIT EQU T0_VAL_INIT / 256
  16. TL0_INIT EQU T0_VAL_INIT MOD 256
  17. TIMER_COUNTER DATA 045h
  18.  
  19. UP_KEY      DATA 051h       ; CSKBD1 bit 4
  20. DOWN_KEY    DATA 052h       ; CSKBD1 bit 5
  21. ESC_KEY     DATA 053h       ; CSKBD1 bit 6
  22. ENTER_KEY   DATA 054h       ; CSKBD1 bit 7
  23.  
  24. STIME DATA 070h             ; czas pracy sekundy
  25. MTIME DATA 071h             ; czas pracy minuty
  26. HTIME DATA 072h             ; czas pracy godziny
  27.  
  28. 0CHAR DATA 073h
  29. 1CHAR DATA 074h
  30. 2CHAR DATA 075h
  31.  
  32. ;---------------------------------------------------------------------------
  33. ;                      S T A R T    P R O G R A M U
  34. ;---------------------------------------------------------------------------
  35.     ORG     0000h
  36. _RESET:
  37.     LJMP    _INIT
  38.     ORG     000Bh
  39. _OVRFL:
  40.     MOV     TH0, #TH0_INIT
  41.     INC     TIMER_COUNTER
  42.     RETI
  43.     ORG     0100h
  44. ;---------------------------------------------------------------------------
  45. ;                       I N I C J A L I Z A C J A
  46. ;---------------------------------------------------------------------------
  47. _INIT:
  48.     NOP
  49.     CLR     C
  50.  
  51.     MOV     SCON, #01010000b                    ; M0=0  M1=1  M2=0  REN=1  TB8=0  RB8=0  TI=0  RI=0
  52.     ANL     TMOD, #00101111b
  53.     ORL     TMOD, #00100000b
  54.  
  55.     MOV     TL1, #0FDh
  56.     MOV     TH1, #0FDh
  57.     ANL     PCON, #01111111b
  58.     CLR     TF1
  59.     SETB    TR1
  60.  
  61.     MOV     STIME, #00d
  62.     MOV     MTIME, #00d
  63.     MOV     HTIME, #00d
  64.  
  65.     MOV     0CHAR, #00d
  66.     MOV     1CHAR, #00d
  67.     MOV     2CHAR, #00d
  68.  
  69.     MOV     TIMER_COUNTER, #0d                  ; zainicjalizowanie licznika programowego
  70.     MOV     TMOD, #00000001b
  71.     MOV     TH0, #TH0_INIT
  72.     MOV     TL0, #TL0_INIT
  73.     SETB    EA
  74.     SETB    ET0
  75.  
  76.     CLR     TF0                                 ; flaga przepelnienia - wyczysc
  77.     SETB    TR0
  78.  
  79.     CALL    _LCD_INIT                           ; inicjalizacja wyswietlacza LCD
  80.    
  81.     CALL    _GOTO_MSG_STATE
  82. ;---------------------------------------------------------------------------
  83. ;                        P E T L A    G L O W N A
  84. ;---------------------------------------------------------------------------
  85. _LOOP:
  86.     CALL    _KBD_HANDLE
  87.  
  88.     ;--------------------------------;
  89.     MOV     A, STATE
  90.     ANL     A, #00000001b
  91.     JNZ     _MSG_STATE_LJMP
  92.     LJMP    _MSG_STATE_LJMP_END
  93.     _MSG_STATE_LJMP:
  94.         LJMP    _MSG_STATE
  95.     _MSG_STATE_LJMP_END:
  96.     ;--------------------------------;
  97.  
  98.     ;--------------------------------;
  99.     MOV     A, STATE
  100.     ANL     A, #00000010b
  101.     JNZ     _SETTINGS_STATE_LJMP
  102.     LJMP    _SETTINGS_STATE_LJMP_END
  103.     _SETTINGS_STATE_LJMP:
  104.         LJMP    _SETTINGS_STATE
  105.     _SETTINGS_STATE_LJMP_END:
  106.     ;--------------------------------;
  107.  
  108.     ;--------------------------------;
  109.     MOV     A, STATE
  110.     ANL     A, #00000100b
  111.     JNZ     _TEST_STATE_LMJP
  112.     LJMP    _TEST_STATE_LMJP_END
  113.     _TEST_STATE_LMJP:
  114.         LJMP    _TEST_STATE
  115.     _TEST_STATE_LMJP_END:
  116.     ;--------------------------------;
  117.  
  118.     ;--------------------------------;
  119.     MOV     A, STATE
  120.     ANL     A, #00001000b
  121.     JNZ     _TEST_BUZZER_STATE_LMJP
  122.     LJMP    _TEST_BUZZER_STATE_LMJP_END
  123.     _TEST_BUZZER_STATE_LMJP:
  124.         LJMP    _TEST_BUZZER_STATE
  125.     _TEST_BUZZER_STATE_LMJP_END:
  126.     ;--------------------------------;
  127.  
  128.     ;--------------------------------;
  129.     MOV     A, STATE
  130.     ANL     A, #00010000b
  131.     JNZ     _TEST_LED_STATE_LMJP
  132.     LJMP    _TEST_LED_STATE_LMJP_END
  133.     _TEST_LED_STATE_LMJP:
  134.         LJMP    _TEST_LED_STATE
  135.     _TEST_LED_STATE_LMJP_END:
  136.     ;--------------------------------;
  137.  
  138.     ;--------------------------------;
  139.     MOV     A, STATE
  140.     ANL     A, #00100000b
  141.     JNZ     _SETTINGS_UPTIME_STATE_LMJP
  142.     LJMP    _SETTINGS_UPTIME_STATE_LMJP_END
  143.     _SETTINGS_UPTIME_STATE_LMJP:
  144.         LJMP    _SETTINGS_UPTIME_STATE
  145.     _SETTINGS_UPTIME_STATE_LMJP_END:
  146.     ;--------------------------------;
  147.  
  148.     ;--------------------------------;
  149.     MOV     A, STATE
  150.     ANL     A, #01000000b
  151.     JNZ     _MSG_SEND_STATE_LMJP
  152.     LJMP    _MSG_SEND_STATE_LMJP_END
  153.     _MSG_SEND_STATE_LMJP:
  154.         LJMP    _MSG_SEND_STATE
  155.     _MSG_SEND_STATE_LMJP_END:
  156.     ;--------------------------------;
  157.  
  158.     ;--------------------------------;
  159.     MOV     A, STATE
  160.     ANL     A, #10000000b
  161.     JNZ     _SETTINGS_EDIT_MSG_STATE_LMJP
  162.     LJMP    _SETTINGS_EDIT_MSG_STATE_END
  163.     _SETTINGS_EDIT_MSG_STATE_LMJP:
  164.         LJMP    _SETTINGS_EDIT_MSG_STATE
  165.     _SETTINGS_EDIT_MSG_STATE_END:
  166.     ;--------------------------------;
  167.  
  168. _LOOP_TIMER:
  169.     MOV     A, #99d                             ; obsługa licznika programowego timera
  170.     CLR     C
  171.     SUBB    A, TIMER_COUNTER
  172.     JNC     _LOOP
  173.     CLR     C
  174.     MOV     A, TIMER_COUNTER
  175.     SUBB    A, #100d
  176.     MOV     TIMER_COUNTER, A
  177.     ; ----- zdarzenia co 1 sek ------;
  178.     INC     STIME
  179.     MOV     A, STIME
  180.     CJNE    A, #60, _LOOP
  181.     MOV     STIME, #00d
  182.     INC     MTIME
  183.     MOV     A, MTIME
  184.     CJNE    A, #60, _LOOP
  185.     MOV     MTIME, #00d
  186.     INC     HTIME
  187.  
  188.     LJMP    _LOOP
  189. ;---------------------------------------------------------------------------
  190. ;                                    M S G
  191. ;---------------------------------------------------------------------------
  192. _MSG_STATE:
  193.     ;----------[ ENTER KEY ]-----------;
  194.     MOV     A, ENTER_KEY
  195.     JNZ     _MSG_STATE_ENTER_PRESSED
  196.     LJMP    _MSG_STATE_ENTER_NOT_RESSED
  197.  
  198.     _MSG_STATE_ENTER_PRESSED:
  199.         CALL    _GOTO_MSG_SEND_STATE
  200.         LJMP    _MSG_STATE_ENTER_END
  201.     _MSG_STATE_ENTER_NOT_RESSED:
  202.         LJMP    _MSG_state_ENTER_END
  203.     _MSG_STATE_ENTER_END:
  204.     ;----------------------------------;
  205.  
  206.     ;------------[ UP KEY ]------------;
  207.     MOV     A, UP_KEY
  208.     JNZ     _MSG_STATE_UP_PRESSED
  209.     LJMP    _MSG_STATE_UP_NOT_RESSED
  210.  
  211.     _MSG_STATE_UP_PRESSED:
  212.         CALL    _GOTO_TEST_STATE
  213.         LJMP    _MSG_STATE_UP_END
  214.     _MSG_STATE_UP_NOT_RESSED:
  215.         LJMP    _MSG_STATE_UP_END
  216.     _MSG_STATE_UP_END:
  217.     ;----------------------------------;
  218.    
  219.     ;-----------[ DOWN KEY ]-----------;
  220.     MOV     A, DOWN_KEY
  221.     JNZ     _MSG_STATE_DOWN_PRESSED
  222.     LJMP    _MSG_STATE_DOWN_NOT_RESSED
  223.  
  224.     _MSG_STATE_DOWN_PRESSED:
  225.         CALL    _GOTO_SETTINGS_STATE
  226.         LJMP    _MSG_STATE_DOWN_END
  227.     _MSG_STATE_DOWN_NOT_RESSED:
  228.         LJMP    _MSG_STATE_DOWN_END
  229.     _MSG_STATE_DOWN_END:
  230.     ;----------------------------------;
  231.     LJMP    _LOOP_TIMER
  232. ;---------------------------------------------------------------------------
  233. ;                            M S G  /  S E N D
  234. ;---------------------------------------------------------------------------
  235. _MSG_SEND_STATE:
  236.     ;----------[ ENTER KEY ]-----------;
  237.     MOV     A, ENTER_KEY
  238.     JNZ     _MSG_SEND_STATE_ENTER_PRESSED
  239.     LJMP    _MSG_SEND_STATE_ENTER_NOT_RESSED
  240.  
  241.     _MSG_SEND_STATE_ENTER_PRESSED:
  242.         MOV     SBUF, #32
  243.         LJMP    _MSG_SEND_STATE_ENTER_END
  244.     _MSG_SEND_STATE_ENTER_NOT_RESSED:
  245.         LJMP    _MSG_SEND_STATE_ENTER_END
  246.     _MSG_SEND_STATE_ENTER_END:
  247.     ;----------------------------------;
  248.  
  249.     ;------------[ ESC KEY ]-----------;
  250.     MOV     A, ESC_KEY
  251.     JNZ     _MSG_SEND_STATE_ESC_PRESSED
  252.     LJMP    _MSG_SEND_STATE_ESC_NOT_RESSED
  253.  
  254.     _MSG_SEND_STATE_ESC_PRESSED:
  255.         CALL    _GOTO_MSG_STATE
  256.         LJMP    _MSG_SEND_STATE_ESC_END
  257.     _MSG_SEND_STATE_ESC_NOT_RESSED:
  258.         LJMP    _MSG_SEND_STATE_ESC_END
  259.     _MSG_SEND_STATE_ESC_END:
  260.     ;----------------------------------;
  261.  
  262.     LJMP    _LOOP_TIMER
  263. ;---------------------------------------------------------------------------
  264. ;                              S E T T I N G S
  265. ;---------------------------------------------------------------------------
  266. _SETTINGS_STATE:
  267.     ;------------[ UP KEY ]------------;
  268.     MOV     A, UP_KEY
  269.     JNZ     _SETTINGS_STATE_UP_PRESSED
  270.     LJMP    _SETTINGS_STATE_UP_NOT_RESSED
  271.  
  272.     _SETTINGS_STATE_UP_PRESSED:
  273.         CALL    _GOTO_MSG_STATE
  274.         LJMP    _SETTINGS_STATE_UP_END
  275.     _SETTINGS_STATE_UP_NOT_RESSED:
  276.         LJMP    _SETTINGS_STATE_UP_END
  277.     _SETTINGS_STATE_UP_END:
  278.     ;----------------------------------;
  279.  
  280.    
  281.     ;-----------[ DOWN KEY ]-----------;
  282.     MOV     A, DOWN_KEY
  283.     JNZ     _SETTINGS_STATE_DOWN_PRESSED
  284.     LJMP    _SETTINGS_STATE_DOWN_NOT_RESSED
  285.  
  286.     _SETTINGS_STATE_DOWN_PRESSED:
  287.         CALL    _GOTO_TEST_STATE
  288.         LJMP    _SETTINGS_STATE_DOWN_END
  289.     _SETTINGS_STATE_DOWN_NOT_RESSED:
  290.         NOP
  291.         LJMP    _SETTINGS_STATE_DOWN_END
  292.     _SETTINGS_STATE_DOWN_END:
  293.     ;----------------------------------;
  294.  
  295.     ;----------[ ENTER KEY ]-----------;
  296.     MOV     A, ENTER_KEY
  297.     JNZ     _SETTINGS_STATE_ENTER_PRESSED
  298.     LJMP    _SETTINGS_STATE_ENTER_NOT_RESSED
  299.  
  300.     _SETTINGS_STATE_ENTER_PRESSED:
  301.         CALL    _GOTO_SETTINGS_UPTIME_STATE
  302.         LJMP    _SETTINGS_STATE_ENTER_END
  303.     _SETTINGS_STATE_ENTER_NOT_RESSED:
  304.         LJMP    _SETTINGS_STATE_ENTER_END
  305.     _SETTINGS_STATE_ENTER_END:
  306.     ;----------------------------------;
  307.  
  308.     LJMP    _LOOP_TIMER
  309. ;---------------------------------------------------------------------------
  310. ;                 S E T T I N G S  /  E D I T _ M S G
  311. ;---------------------------------------------------------------------------
  312. _SETTINGS_EDIT_MSG_STATE:
  313.     ;------------[ ESC KEY ]-----------;
  314.     MOV     A, ESC_KEY
  315.     JNZ     _SETTINGS_EDIT_MSG_STATE_ESC_PRESSED
  316.     LJMP    _SETTINGS_EDIT_MSG_STATE_ESC_NOT_RESSED
  317.  
  318.     _SETTINGS_EDIT_MSG_STATE_ESC_PRESSED:
  319.         CALL    _GOTO_SETTINGS_STATE
  320.         LJMP    _SETTINGS_STATE_EDIT_MSG_ENTER_END
  321.     _SETTINGS_EDIT_MSG_STATE_ESC_NOT_RESSED:
  322.         LJMP    _SETTINGS_STATE_EDIT_MSG_ENTER_END
  323.     _SETTINGS_STATE_EDIT_MSG_ENTER_END:
  324.     ;----------------------------------;
  325.  
  326.     ;------------[ UP KEY ]------------;
  327.     MOV     A, UP_KEY
  328.     JNZ     _SETTINGS_EDIT_MSG_STATE_UP_PRESSED
  329.     LJMP    _SETTINGS_EDIT_MSG_STATE_UP_NOT_RESSED
  330.  
  331.     _SETTINGS_EDIT_MSG_STATE_UP_PRESSED:
  332.         CALL    _GOTO_SETTINGS_UPTIME_STATE
  333.         LJMP    _SETTINGS_EDIT_MSG_STATE_UP_END
  334.     _SETTINGS_EDIT_MSG_STATE_UP_NOT_RESSED:
  335.         LJMP    _SETTINGS_EDIT_MSG_STATE_UP_END
  336.     _SETTINGS_EDIT_MSG_STATE_UP_END:
  337.     ;----------------------------------;
  338.    
  339.     ;-----------[ DOWN KEY ]-----------;
  340.     MOV     A, DOWN_KEY
  341.     JNZ     _SETTINGS_EDIT_MSG_STATE_DOWN_PRESSED
  342.     LJMP    _SETTINGS_EDIT_MSG_STATE_DOWN_NOT_RESSED
  343.  
  344.     _SETTINGS_EDIT_MSG_STATE_DOWN_PRESSED:
  345.         CALL    _GOTO_SETTINGS_UPTIME_STATE
  346.         LJMP    _SETTINGS_EDIT_MSG_STATE_DOWN_END
  347.     _SETTINGS_EDIT_MSG_STATE_DOWN_NOT_RESSED:
  348.         LJMP    _SETTINGS_EDIT_MSG_STATE_DOWN_END
  349.     _SETTINGS_EDIT_MSG_STATE_DOWN_END:
  350.     ;----------------------------------;
  351.  
  352.     LJMP _LOOP_TIMER
  353. ;---------------------------------------------------------------------------
  354. ;                   S E T T I N G S  /  U P T I M E
  355. ;---------------------------------------------------------------------------
  356. _SETTINGS_UPTIME_STATE:
  357.     ;----------[ ENTER KEY ]-----------;
  358.     MOV     A, ENTER_KEY
  359.     JNZ     _SETTINGS_UPTIME_ENTER_PRESSED
  360.     LJMP    _SETTINGS_UPTIME_ENTER_NOT_RESSED
  361.  
  362.     _SETTINGS_UPTIME_ENTER_PRESSED:
  363.         CALL    _LCD_CLEAR
  364.         MOV     R7, #91d
  365.         CALL    _LCD_DATA_FROM_R7
  366.         MOV     A, HTIME
  367.         MOV     B, #10d
  368.         DIV     AB
  369.         ADD     A, #48d
  370.         MOV     R7, A
  371.         CALL    _LCD_DATA_FROM_R7
  372.         MOV     A, B
  373.         ADD     A, #48d
  374.         MOV     R7, A
  375.         CALL    _LCD_DATA_FROM_R7
  376.         MOV     R7, #58d
  377.         CALL    _LCD_DATA_FROM_R7
  378.         MOV     A, MTIME
  379.         MOV     B, #10d
  380.         DIV     AB
  381.         ADD     A, #48d
  382.         MOV     R7, A
  383.         CALL    _LCD_DATA_FROM_R7
  384.         MOV     A, B
  385.         ADD     A, #48d
  386.         MOV     R7, A
  387.         CALL    _LCD_DATA_FROM_R7
  388.         MOV     R7, #58d
  389.         CALL    _LCD_DATA_FROM_R7
  390.         MOV     A, STIME
  391.         MOV     B, #10d
  392.         DIV     AB
  393.         ADD     A, #48d
  394.         MOV     R7, A
  395.         CALL    _LCD_DATA_FROM_R7
  396.         MOV     A, B
  397.         ADD     A, #48d
  398.         MOV     R7, A
  399.         CALL    _LCD_DATA_FROM_R7
  400.         MOV     R7, #93d
  401.         CALL    _LCD_DATA_FROM_R7
  402.         LJMP    _SETTINGS_UPTIME_ENTER_END
  403.     _SETTINGS_UPTIME_ENTER_NOT_RESSED:
  404.         LJMP    _SETTINGS_UPTIME_ENTER_END
  405.     _SETTINGS_UPTIME_ENTER_END:
  406.     ;----------------------------------;
  407.  
  408.     ;------------[ ESC KEY ]-----------;
  409.     MOV     A, ESC_KEY
  410.     JNZ     _SETTINGS_UPTIME_STATE_ESC_PRESSED
  411.     LJMP    _SETTINGS_UPTIME_STATE_ESC_NOT_RESSED
  412.  
  413.     _SETTINGS_UPTIME_STATE_ESC_PRESSED:
  414.         CALL    _GOTO_SETTINGS_STATE
  415.         LJMP    _SETTINGS_STATE_UPTIME_ENTER_END
  416.     _SETTINGS_UPTIME_STATE_ESC_NOT_RESSED:
  417.         LJMP    _SETTINGS_STATE_UPTIME_ENTER_END
  418.     _SETTINGS_STATE_UPTIME_ENTER_END:
  419.     ;----------------------------------;
  420.  
  421.     ;------------[ UP KEY ]------------;
  422.     MOV     A, UP_KEY
  423.     JNZ     _SETTINGS_UPTIME_STATE_UP_PRESSED
  424.     LJMP    _SETTINGS_UPTIME_STATE_UP_NOT_RESSED
  425.  
  426.     _SETTINGS_UPTIME_STATE_UP_PRESSED:
  427.         CALL    _GOTO_SETTINGS_EDIT_MSG_STATE
  428.         LJMP    _SETTINGS_UPTIME_STATE_UP_END
  429.     _SETTINGS_UPTIME_STATE_UP_NOT_RESSED:
  430.         LJMP    _SETTINGS_UPTIME_STATE_UP_END
  431.     _SETTINGS_UPTIME_STATE_UP_END:
  432.     ;----------------------------------;
  433.    
  434.     ;-----------[ DOWN KEY ]-----------;
  435.     MOV     A, DOWN_KEY
  436.     JNZ     _SETTINGS_UPTIME_STATE_DOWN_PRESSED
  437.     LJMP    _SETTINGS_UPTIME_STATE_DOWN_NOT_RESSED
  438.  
  439.     _SETTINGS_UPTIME_STATE_DOWN_PRESSED:
  440.         CALL    _GOTO_SETTINGS_EDIT_MSG_STATE
  441.         LJMP    _SETTINGS_UPTIME_STATE_DOWN_END
  442.     _SETTINGS_UPTIME_STATE_DOWN_NOT_RESSED:
  443.         LJMP    _SETTINGS_UPTIME_STATE_DOWN_END
  444.     _SETTINGS_UPTIME_STATE_DOWN_END:
  445.     ;----------------------------------;
  446.  
  447.     LJMP    _LOOP_TIMER
  448. ;---------------------------------------------------------------------------
  449. ;                               T E S T
  450. ;---------------------------------------------------------------------------
  451. _TEST_STATE:
  452.     ;------------[ UP KEY ]------------;
  453.     MOV     A, UP_KEY
  454.     JNZ     _TEST_STATE_UP_PRESSED
  455.     LJMP    _TEST_STATE_UP_NOT_RESSED
  456.  
  457.     _TEST_STATE_UP_PRESSED:
  458.         CALL    _GOTO_SETTINGS_STATE
  459.         LJMP    _TEST_STATE_UP_END
  460.     _TEST_STATE_UP_NOT_RESSED:
  461.         LJMP    _TEST_STATE_UP_END
  462.     _TEST_STATE_UP_END:
  463.     ;----------------------------------;
  464.  
  465.    
  466.     ;-----------[ DOWN KEY ]-----------;
  467.     MOV     A, DOWN_KEY
  468.     JNZ     _TEST_STATE_DOWN_PRESSED
  469.     LJMP    _TEST_STATE_DOWN_NOT_RESSED
  470.  
  471.     _TEST_STATE_DOWN_PRESSED:
  472.         CALL    _GOTO_MSG_STATE
  473.         LJMP    _TEST_STATE_DOWN_END
  474.     _TEST_STATE_DOWN_NOT_RESSED:
  475.         LJMP    _TEST_STATE_DOWN_END
  476.     _TEST_STATE_DOWN_END:
  477.     ;----------------------------------;
  478.  
  479.     ;----------[ ENTER KEY ]-----------;
  480.     MOV     A, ENTER_KEY
  481.     JNZ     _TEST_STATE_ENTER_PRESSED
  482.     LJMP    _TEST_STATE_ENTER_NOT_RESSED
  483.  
  484.     _TEST_STATE_ENTER_PRESSED:
  485.         CALL    _GOTO_TEST_BUZZER_STATE
  486.         LJMP    _TEST_STATE_ENTER_END
  487.     _TEST_STATE_ENTER_NOT_RESSED:
  488.         LJMP    _TEST_STATE_ENTER_END
  489.     _TEST_STATE_ENTER_END:
  490.     ;----------------------------------;
  491.  
  492.     LJMP    _LOOP_TIMER
  493. ;---------------------------------------------------------------------------
  494. ;                         T E S T  /  B U Z Z E R
  495. ;---------------------------------------------------------------------------
  496. _TEST_BUZZER_STATE:
  497.     ;------------[ UP KEY ]------------;
  498.     MOV     A, UP_KEY
  499.     JNZ     _TEST_BUZZER_STATE_UP_PRESSED
  500.     LJMP    _TEST_BUZZER_STATE_UP_NOT_RESSED
  501.  
  502.     _TEST_BUZZER_STATE_UP_PRESSED:
  503.         CALL    _GOTO_TEST_LED_STATE
  504.         LJMP    _TEST_BUZZER_STATE_UP_END
  505.     _TEST_BUZZER_STATE_UP_NOT_RESSED:
  506.         LJMP    _TEST_BUZZER_STATE_UP_END
  507.     _TEST_BUZZER_STATE_UP_END:
  508.     ;----------------------------------;
  509.  
  510.     ;-----------[ DOWN KEY ]-----------;
  511.     MOV     A, DOWN_KEY
  512.     JNZ     _TEST_BUZZER_STATE_DOWN_PRESSED
  513.     LJMP    _TEST_BUZZER_STATE_DOWN_NOT_RESSED
  514.  
  515.     _TEST_BUZZER_STATE_DOWN_PRESSED:
  516.         CALL    _GOTO_TEST_LED_STATE
  517.         LJMP    _TEST_BUZZER_STATE_DOWN_END
  518.     _TEST_BUZZER_STATE_DOWN_NOT_RESSED:
  519.         LJMP    _TEST_BUZZER_STATE_DOWN_END
  520.     _TEST_BUZZER_STATE_DOWN_END:
  521.     ;----------------------------------;
  522.  
  523.     ;----------[ ENTER KEY ]-----------;
  524.     MOV     A, ENTER_KEY
  525.     JNZ     _TEST_BUZZER_STATE_ENTER_PRESSED
  526.     LJMP    _TEST_BUZZER_STATE_ENTER_NOT_RESSED
  527.  
  528.     _TEST_BUZZER_STATE_ENTER_PRESSED:
  529.         CPL     P1.5                            ; zanegowanie brzęczyk BUZZER
  530.         LJMP    _TEST_BUZZER_STATE_ENTER_END
  531.     _TEST_BUZZER_STATE_ENTER_NOT_RESSED:
  532.         LJMP    _TEST_BUZZER_STATE_ENTER_END
  533.     _TEST_BUZZER_STATE_ENTER_END:
  534.     ;----------------------------------;
  535.  
  536.     ;------------[ ESC KEY ]-----------;
  537.     MOV     A, ESC_KEY
  538.     JNZ     _TEST_BUZZER_STATE_ESC_PRESSED
  539.     LJMP    _TEST_BUZZER_STATE_ESC_NOT_RESSED
  540.  
  541.     _TEST_BUZZER_STATE_ESC_PRESSED:
  542.         CALL    _GOTO_TEST_STATE
  543.         LJMP    _TEST_BUZZER_STATE_ESC_END
  544.     _TEST_BUZZER_STATE_ESC_NOT_RESSED:
  545.         LJMP    _TEST_BUZZER_STATE_ESC_END
  546.     _TEST_BUZZER_STATE_ESC_END:
  547.     ;----------------------------------;
  548.  
  549.     LJMP    _LOOP_TIMER
  550. ;---------------------------------------------------------------------------
  551. ;                            T E S T  /  L E D
  552. ;---------------------------------------------------------------------------
  553. _TEST_LED_STATE:
  554.     ;------------[ UP KEY ]------------;
  555.     MOV     A, UP_KEY
  556.     JNZ     _TEST_LED_STATE_UP_PRESSED
  557.     LJMP    _TEST_LED_STATE_UP_NOT_RESSED
  558.  
  559.     _TEST_LED_STATE_UP_PRESSED:
  560.         CALL    _GOTO_TEST_BUZZER_STATE
  561.         LJMP    _TEST_LED_STATE_UP_END
  562.     _TEST_LED_STATE_UP_NOT_RESSED:
  563.         LJMP    _TEST_LED_STATE_UP_END
  564.     _TEST_LED_STATE_UP_END:
  565.     ;----------------------------------;
  566.  
  567.     ;-----------[ DOWN KEY ]-----------;
  568.     MOV     A, DOWN_KEY
  569.     JNZ     _TEST_LED_STATE_DOWN_PRESSED
  570.     LJMP    _TEST_LED_STATE_DOWN_NOT_RESSED
  571.  
  572.     _TEST_LED_STATE_DOWN_PRESSED:
  573.         CALL    _GOTO_TEST_BUZZER_STATE
  574.         LJMP    _TEST_LED_STATE_DOWN_END
  575.     _TEST_LED_STATE_DOWN_NOT_RESSED:
  576.         LJMP    _TEST_LED_STATE_DOWN_END
  577.     _TEST_LED_STATE_DOWN_END:
  578.     ;----------------------------------;
  579.  
  580.     ;----------[ ENTER KEY ]-----------;
  581.     MOV     A, ENTER_KEY
  582.     JNZ     _TEST_LED_STATE_ENTER_PRESSED
  583.     LJMP    _TEST_LED_STATE_ENTER_NOT_RESSED
  584.  
  585.     _TEST_LED_STATE_ENTER_PRESSED:
  586.         CPL     P1.7                            ; zanegowanie dioda świecąca TEST
  587.         LJMP    _TEST_LED_STATE_ENTER_END
  588.     _TEST_LED_STATE_ENTER_NOT_RESSED:
  589.         LJMP    _TEST_LED_STATE_ENTER_END
  590.     _TEST_LED_STATE_ENTER_END:
  591.     ;----------------------------------;
  592.  
  593.     ;------------[ ESC KEY ]-----------;
  594.     MOV     A, ESC_KEY
  595.     JNZ     _TEST_LED_STATE_ESC_PRESSED
  596.     LJMP    _TEST_LED_STATE_ESC_NOT_RESSED
  597.  
  598.     _TEST_LED_STATE_ESC_PRESSED:
  599.         CALL    _GOTO_TEST_STATE
  600.         LJMP    _TEST_LED_STATE_ESC_END
  601.     _TEST_LED_STATE_ESC_NOT_RESSED:
  602.         LJMP    _TEST_LED_STATE_ESC_END
  603.     _TEST_LED_STATE_ESC_END:
  604.     ;----------------------------------;
  605.  
  606.     LJMP    _LOOP_TIMER
  607. ;---------------------------------------------------------------------------
  608. ;                    O B S L U G A    K L A W I A T U R Y
  609. ;---------------------------------------------------------------------------
  610. _KBD_HANDLE:
  611.     MOV     UP_KEY, #0d
  612.     MOV     DOWN_KEY, #0d
  613.     MOV     ENTER_KEY, #0d
  614.     MOV     ESC_KEY, #0d
  615.  
  616.     MOV     R5, #82d
  617.     MOV     R6, #82d
  618.     _KBD_HANDLE_UP_10:
  619.     _KBD_HANDLE_UP_40:
  620.         MOV     R0, #CSKB1
  621.         MOVX    A, @R0
  622.         ANL     A, #00010000b
  623.         JNZ     _KBD_HANDLE_UP_30
  624.         DJNZ    R5, _KBD_HANDLE_UP_40
  625.         DJNZ    R6, _KBD_HANDLE_UP_10
  626.         MOV     UP_KEY, #1d
  627.     _KBD_HANDLE_UP_30:
  628.  
  629.  
  630.     MOV     R5, #82d
  631.     MOV     R6, #82d
  632.     _KBD_HANDLE_DOWN_10:
  633.     _KBD_HANDLE_DOWN_40:
  634.         MOV     R0, #CSKB1
  635.         MOVX    A, @R0
  636.         ANL     A, #00100000b
  637.         JNZ     _KBD_HANDLE_DOWN_30
  638.         DJNZ    R5, _KBD_HANDLE_DOWN_40
  639.         DJNZ    R6, _KBD_HANDLE_DOWN_10
  640.         MOV     DOWN_KEY, #1d
  641.     _KBD_HANDLE_DOWN_30:
  642.  
  643.     MOV     R5, #82d
  644.     MOV     R6, #82d
  645.     _KBD_HANDLE_ESC_10:
  646.     _KBD_HANDLE_ESC_40:
  647.         MOV     R0, #CSKB1
  648.         MOVX    A, @R0
  649.         ANL     A, #01000000b
  650.         JNZ     _KBD_HANDLE_ESC_30
  651.         DJNZ    R5, _KBD_HANDLE_ESC_40
  652.         DJNZ    R6, _KBD_HANDLE_ESC_10
  653.         MOV     ESC_KEY, #1d
  654.     _KBD_HANDLE_ESC_30:
  655.  
  656.     MOV     R5, #82d
  657.     MOV     R6, #82d
  658.     _KBD_HANDLE_ENTER_10:
  659.     _KBD_HANDLE_ENTER_40:
  660.         MOV     R0, #CSKB1
  661.         MOVX    A, @R0
  662.         ANL     A, #10000000b
  663.         JNZ     _KBD_HANDLE_ENTER_30
  664.         DJNZ    R5, _KBD_HANDLE_ENTER_40
  665.         DJNZ    R6, _KBD_HANDLE_ENTER_10
  666.         MOV     ENTER_KEY, #1d
  667.     _KBD_HANDLE_ENTER_30:
  668.     RET
  669. ;---------------------------------------------------------------------------
  670. ;                       S K O K I    P O    M E N U
  671. ;---------------------------------------------------------------------------
  672. _GOTO_MSG_STATE:
  673.     CALL    _LCD_CLEAR
  674.     MOV     STRING, #00h
  675.     CALL    _LCD_DISPLAY_STRING
  676.     MOV     STRING, #10h
  677.     CALL    _LCD_DISPLAY_STRING
  678.     MOV     STATE, #00000001b
  679.     LJMP    _LOOP
  680.  
  681. _GOTO_MSG_SEND_STATE:
  682.     CALL    _LCD_CLEAR
  683.     MOV     STRING, #10h
  684.     CALL    _LCD_DISPLAY_STRING
  685.     MOV     STRING, #40h
  686.     CALL    _LCD_DISPLAY_STRING
  687.     MOV     STATE, #01000000b
  688.     LJMP    _LOOP
  689.  
  690. _GOTO_SETTINGS_STATE:
  691.     CALL    _LCD_CLEAR
  692.     MOV     STRING, #00h
  693.     CALL    _LCD_DISPLAY_STRING
  694.     MOV     STRING, #20h
  695.     CALL    _LCD_DISPLAY_STRING
  696.     MOV     STATE, #00000010b
  697.     LJMP    _LOOP
  698.  
  699. _GOTO_TEST_STATE:
  700.     CALL    _LCD_CLEAR
  701.     MOV     STRING, #00h
  702.     CALL    _LCD_DISPLAY_STRING
  703.     MOV     STRING, #30h
  704.     CALL    _LCD_DISPLAY_STRING
  705.     MOV     STATE, #00000100b
  706.     LJMP    _LOOP
  707.  
  708. _GOTO_TEST_BUZZER_STATE:
  709.     CALL    _LCD_CLEAR
  710.     MOV     STRING, #30h
  711.     CALL    _LCD_DISPLAY_STRING
  712.     MOV     STRING, #80h
  713.     CALL    _LCD_DISPLAY_STRING
  714.     MOV     STATE, #00001000b
  715.     LJMP    _LOOP
  716.  
  717. _GOTO_TEST_LED_STATE:
  718.     CALL    _LCD_CLEAR
  719.     MOV     STRING, #30h
  720.     CALL    _LCD_DISPLAY_STRING
  721.     MOV     STRING, #90h
  722.     CALL    _LCD_DISPLAY_STRING
  723.     MOV     STATE, #00010000b
  724.     LJMP    _LOOP
  725.  
  726. _GOTO_SETTINGS_UPTIME_STATE:
  727.     CALL    _LCD_CLEAR
  728.     MOV     STRING, #20h
  729.     CALL    _LCD_DISPLAY_STRING
  730.     MOV     STRING, #60h
  731.     CALL    _LCD_DISPLAY_STRING
  732.     MOV     STATE, #00100000b
  733.     LJMP    _LOOP
  734.  
  735.  
  736. _GOTO_SETTINGS_EDIT_MSG_STATE:
  737.     CALL    _LCD_CLEAR
  738.     MOV     STRING, #20h
  739.     CALL    _LCD_DISPLAY_STRING
  740.     MOV     STRING, #70h
  741.     CALL    _LCD_DISPLAY_STRING
  742.     MOV     STATE, #10000000b
  743.     LJMP    _LOOP
  744.  
  745. ;---------------------------------------------------------------------------
  746. ;                       D O S T E P N O S C    L C D
  747. ;---------------------------------------------------------------------------
  748. _LCD_WAIT_WHILE_BUSY:
  749.     _LCD_WAIT_LOOP:
  750.         MOV     DPTR, #LCDRC
  751.         MOVX    A, @DPTR
  752.         JNB     ACC.7, _LCD_WAIT_END
  753.         LJMP    _LCD_WAIT_LOOP
  754.     _LCD_WAIT_END:
  755.         RET
  756. ;---------------------------------------------------------------------------
  757. ;                           R O Z K A Z    L C D
  758. ;---------------------------------------------------------------------------
  759. _LCD_CMD_FROM_R7:
  760.     CALL    _LCD_WAIT_WHILE_BUSY
  761.     MOV     A, R7
  762.     MOV     DPTR, #LCDWC
  763.     MOVX    @DPTR, A
  764.     RET
  765. ;---------------------------------------------------------------------------
  766. ;                             D A N E    L C D
  767. ;---------------------------------------------------------------------------
  768. _LCD_DATA_FROM_R7:
  769.     CALL    _LCD_WAIT_WHILE_BUSY
  770.     MOV     A, R7
  771.     MOV     DPTR, #LCDWD
  772.     MOVX    @DPTR, A
  773.     RET
  774. ;---------------------------------------------------------------------------
  775. ;                   I N I C J A L I Z A C J A    L C D
  776. ;---------------------------------------------------------------------------
  777. _LCD_INIT:
  778.     MOV     R7, #00111000b              ; function set
  779.     CALL    _LCD_CMD_FROM_R7
  780.  
  781.     MOV     R7, #00001100b              ; display on/off control
  782.     CALL    _LCD_CMD_FROM_R7
  783.  
  784.     MOV     R7, #00000110b              ; entry mode set
  785.     CALL    _LCD_CMD_FROM_R7
  786.  
  787.     CALL    _LCD_CLEAR
  788.     RET
  789. ;---------------------------------------------------------------------------
  790. ;                    C Z Y S Z C Z E N I E    L C D
  791. ;---------------------------------------------------------------------------
  792. _LCD_CLEAR:
  793.     MOV     R7, #00000001b
  794.     CALL    _LCD_CMD_FROM_R7
  795.     RET
  796. ;---------------------------------------------------------------------------
  797. ;                 W Y S W I E T L A N I E    N A P I S U
  798. ;---------------------------------------------------------------------------
  799. _LCD_DISPLAY_STRING:
  800.     MOV     R5, #0
  801.     MOV     R6, #17
  802.     _LCD_DISPLAY_WHILE:
  803.         DJNZ    R6, _LCD_DISPLAY_CONTINUE
  804.         LJMP    _LCD_DISPLAY_END
  805.     _LCD_DISPLAY_CONTINUE:
  806.         MOV     DPTR, #STRING_PATTERNS
  807.         MOV     A, R5
  808.         ADD     A, STRING
  809.         MOVC    A, @A+DPTR
  810.         MOV     R7, A
  811.         CALL    _LCD_DATA_FROM_R7
  812.         INC     R5
  813.         LJMP    _LCD_DISPLAY_WHILE
  814.     _LCD_DISPLAY_END:
  815.         MOV     R6, #24
  816.         _LCD_DISPLAY_DO:
  817.             MOV     R7, #32
  818.             CALL    _LCD_DATA_FROM_R7
  819.             DJNZ    R6, _LCD_DISPLAY_DO
  820.         RET
  821. ;---------------------------------------------------------------------------
  822. ;                      W Z O R C E    N A P I S O W
  823. ;---------------------------------------------------------------------------
  824. STRING_PATTERNS:
  825.     DB  77,65,73,78,32,77,69,78,85,32,32,32,32,32,32,32 ; MAIN MENU     00h
  826.     DB  77,83,71,32,32,32,32,32,32,32,32,32,32,32,32,32 ; MSG           10h
  827.     DB  83,69,84,84,73,78,71,83,32,32,32,32,32,32,32,32 ; SETTINGS      20h
  828.     DB  84,69,83,84,32,32,32,32,32,32,32,32,32,32,32,32 ; TEST          30h
  829.     DB  62,83,69,78,68,32,32,32,32,32,32,32,32,32,32,32 ; SEND          40h
  830.     DB  62,82,69,65,68,32,32,32,32,32,32,32,32,32,32,32 ; READ          50h
  831.     DB  62,85,80,84,73,77,69,32,32,32,32,32,32,32,32,32 ; UPTIME        60h
  832.     DB  62,69,68,73,84,95,77,83,71,32,32,32,32,32,32,32 ; EDIT_MSG      70h
  833.     DB  62,66,85,90,90,69,82,32,32,32,32,32,32,32,32,32 ; BUZZER        80h
  834.     DB  62,76,69,68,32,32,32,32,32,32,32,32,32,32,32,32 ; LED           90h
  835. END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement