Don't like ads? PRO users don't see any ads ;-)
Guest

asdf

By: a guest on May 16th, 2012  |  syntax: ASM (NASM)  |  size: 3.73 KB  |  hits: 16  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. ;.TITLE 'STOPER'
  2. ;============================
  3.  
  4. STOS    EQU     60H             ;warto˜† wska«nika stosu w RAMie
  5.  
  6. SEG_ON  EQU     P1.6            ;linia wygaszania wy˜wietlacza
  7.  
  8. ;Pami©† wy˜wietlacza
  9. DISPLAY EQU     30H
  10. LEDS    EQU     DISPLAY+6
  11. DOTS    EQU     LEDS+1
  12. NEXT    EQU     DOTS+1
  13.  
  14.  
  15.  
  16. ;Timer 0 przeglĄdanie wska«nik˘w
  17. ;uaktywniany co ok. 1ms - niľszy priorytet
  18. ;1ms =~30 * 32 cykli
  19. ;Mod 0 - starszy bajt liczy do 30
  20.  
  21. ;Timer 1 odliczanie czasu 10 ms
  22. ;10ms = 36*256 cykli
  23. ;Mod 1 - przestawiam tylko starszy bajt
  24.  
  25. TMOD_SET        EQU     00010000B
  26. TH0_SET         EQU     256-30
  27. TH1_SET         EQU     256-36
  28. IE_SET          EQU     10001010B       ;przerwania T0 i T1
  29. IP_SET          EQU     00001000B       ;wyľszy priorytet T1
  30. TCON_SET        EQU     00010000B       ;start timer T0
  31. ;(setb TR1 - start Timer 1)
  32.  
  33. ;BANK0  MACRO
  34.         ;CLR    RS0
  35.         ;MACEND
  36.  
  37. ;BANK1  MACRO
  38.         ;SETB   RS0
  39.         ;MACEND
  40.  
  41.  
  42.  
  43.         LJMP    START
  44.  
  45.         ORG     0BH
  46. ;przerwanie Timer 0
  47.         PUSH    ACC
  48.         PUSH    PSW
  49.         SETB    RS0
  50.         MOV     TH0,#TH0_SET
  51.         AJMP    CONT_INTT0
  52.  
  53.         ORG     1BH
  54. ;przerwanie Timer 1
  55.         PUSH    ACC
  56.         PUSH    PSW
  57.        
  58.         MOV     TH1,#TH1_SET
  59.  
  60.         INC     DISPLAY
  61.         MOV     A,#10
  62.         CJNE    A,DISPLAY,INTT1_END
  63.         MOV     DISPLAY,#0
  64.  
  65.         INC     DISPLAY+1
  66.         MOV     A,#10
  67.         CJNE    A,DISPLAY+1,INTT1_END
  68.         MOV     DISPLAY+1,#0
  69.  
  70.         INC     DISPLAY+2
  71.         MOV     A,#10
  72.         CJNE    A,DISPLAY+2,INTT1_END
  73.         MOV     DISPLAY+2,#0
  74.  
  75.         INC     DISPLAY+3
  76.         MOV     A,#6
  77.         CJNE    A,DISPLAY+3,INTT1_END
  78.         MOV     DISPLAY+3,#0
  79.  
  80.         INC     DISPLAY+4
  81.         MOV     A,#10
  82.         CJNE    A,DISPLAY+4,INTT1_END
  83.         MOV     DISPLAY+4,#0
  84.  
  85.         INC     DISPLAY+5
  86.         MOV     A,#6
  87.         CJNE    A,DISPLAY+5,INTT1_END
  88.         MOV     DISPLAY+5,#0
  89.  
  90. INTT1_END:
  91.         POP     PSW
  92.         POP     ACC
  93.         RETI
  94.  
  95.  
  96.  
  97. CONT_INTT0:
  98.         MOV     R0,#CSDB        ;R0 - adres bufora wyswietlaczy
  99.  
  100.         SETB    SEG_ON
  101.         MOV     A,@R1
  102.         CJNE    R1,#LEDS,D7SEG
  103.  
  104. ;wy˜wietlenie Led˘w
  105.         SJMP    DISP_SET       
  106. D7SEG:
  107.         ACALL   CODE7_GET
  108.  
  109. ;dodanie kropki
  110.         PUSH    ACC
  111.         CLR     C
  112.         MOV     A,R2
  113.         ANL     A,DOTS
  114.         JZ      DOT_NO
  115.         SETB    C
  116. DOT_NO:
  117.         POP     ACC
  118.         MOV     ACC.7,C
  119.  
  120. DISP_SET:
  121.         MOVX    @R0,A
  122.  
  123.         MOV     A,R2            ;kolejny wska«nik
  124.         LCALL   LCD_CLR
  125.         MOV     DPTR,#TEXT1
  126.         LCALL   WRITE_TEXT
  127.        
  128. ;===========================
  129.         MOV     R3, #0
  130. WYSWIETL:
  131.         MOV     A, R3
  132.         CLR C
  133.         ADD     A,#30H
  134.         MOV R0, A
  135.         MOV     A, @R0
  136.         INC     R3
  137.         ;==========
  138.         LCALL CODE7_GET
  139.         LCALL WRITE_DATA
  140.        
  141.         CJNE R3, #36H, WYSWIETL
  142. ;===========================
  143.  
  144.         MOV     R0,#CSDS        ;R0 - adres wyboru wska«nika
  145.         MOVX    @R0,A
  146.  
  147.         CLR     SEG_ON
  148.  
  149.         RL      A
  150.         MOV     R2,A
  151.         INC     R1
  152.         CJNE    R1,#DOTS,NEXT_SEG
  153.  
  154. ;ustaw segment 0
  155.         MOV     R2,#1
  156.         MOV     R1,#DISPLAY     ;wska«nik na pami©† wy˜wietlacza
  157.  
  158. NEXT_SEG:
  159.         POP     PSW
  160.         POP     ACC
  161.         RETI
  162.  
  163.  
  164.  
  165.         ORG     100H
  166. START:
  167.         MOV     SP,#STOS        ;wskaznik stosu
  168.  
  169.         ACALL   STOPPER_CLEAR
  170.  
  171.         MOV     TMOD,#TMOD_SET
  172.         MOV     TH0,#TH0_SET
  173.         MOV     TH1,#TH1_SET
  174.         MOV     TL1,#0
  175.         MOV     IE,#IE_SET
  176.         MOV     IP,#IP_SET
  177.         MOV     TCON,#TCON_SET
  178.  
  179.  
  180.         SETB    RS0
  181.         MOV     R2,#1           ;wyb˘r wskaľnika - 0 (kod 1 z 7)
  182.         MOV     R1,#DISPLAY     ;wska«nik na pami©† wy˜wietlacza
  183.         CLR     RS0
  184.  
  185. LOOP:  ;; main
  186.         LCALL   LCD_CLR
  187.         MOV     DPTR,#TEXT1
  188.         LCALL   WRITE_TEXT
  189.        
  190. ;===========================
  191.         MOV     R3, #0
  192. WYSWIETL1:
  193.         MOV     A, R3
  194.         CLR C
  195.         ADD     A,#30H
  196.         MOV R0, A
  197.         MOV     A, @R0
  198.         INC     R3
  199.         ;==========
  200.         LCALL CODE7_GET
  201.         LCALL WRITE_DATA
  202.        
  203.         CJNE R3, #36H, WYSWIETL1
  204. ;===========================
  205.  
  206.         LCALL   WAIT_ENTER_NW
  207. ;start timer
  208.         SETB    TR1
  209.         MOV     LEDS,#10H
  210.  
  211.         LCALL   LCD_CLR
  212.         MOV     DPTR,#TEXT2
  213.         LCALL   WRITE_TEXT
  214. ;JAK COŚ TUTAJ WKLEIĆ
  215.         LCALL   WAIT_ENTER_NW
  216.  
  217. ;stop timer
  218.         CLR     TR1
  219.         MOV     LEDS,#20H
  220.  
  221.         AJMP    LOOP   
  222.  
  223.  
  224. CODE7_GET:
  225.         INC     A
  226.         MOVC    A,@A+PC
  227.         RET
  228.  
  229.         DB      '0'     ;0
  230.         DB      '1'     ;1
  231.         DB      '2'     ;2
  232.         DB      '3'     ;3
  233.         DB      '4'     ;4
  234.         DB      '5'     ;5
  235.         DB      '6'     ;6
  236.         DB      '7'     ;7
  237.         DB      '8'     ;8
  238.         DB      '9'     ;9
  239.         DB      'A'     ;A
  240.         DB      'b'     ;b
  241.         DB      'C'     ;C
  242.         DB      'd'     ;d
  243.         DB      'E'     ;E
  244.         DB      'F'     ;F
  245.  
  246.  
  247. STOPPER_CLEAR:
  248.         CLR     A
  249.         MOV     DISPLAY,A
  250.         MOV     DISPLAY+1,A
  251.         MOV     DISPLAY+2,A
  252.         MOV     DISPLAY+3,A
  253.         MOV     DISPLAY+4,A
  254.         MOV     DISPLAY+5,A
  255.         MOV     LEDS,#20H
  256.         MOV     DOTS,#00010100B
  257.         RET
  258.        
  259. TEXT1:        
  260.         DB      '                '
  261.         DB      'ENT-STAR ESC-CLR', 0
  262. TEXT2:
  263.         DB      '                '
  264.         DB      'ENTER -> STOP', 0