sp3ctrm5tr

Ejal T-junction

Nov 7th, 2011
42
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. P0      EQU 080H
  2. P1      EQU 090H
  3. P2      EQU 0A0H
  4. P3      EQU 0B0H
  5.  
  6. TL0     EQU 08AH
  7. TH0     EQU 08CH
  8. TL1     EQU 08BH
  9. TH1     EQU 08DH
  10. TCON    EQU 088H        ;CONTROL OF TIMER
  11. TMOD    EQU 089H
  12.  
  13. IE      EQU 0A8H        ;ENABLE INTERRUPT
  14.  
  15. ;xxxxxxxxxXXXXXXXXXXXXXXXXXXxxxxxxxxxxxxxxx
  16.  
  17.         ORG 0000H       ;RESET
  18.         LJMP MAIN
  19.        
  20.         ORG 0003H       ;EXTERNAL 0
  21.         LJMP ISR
  22.  
  23. ;xxxxxxxxxxxXXXXXXXXXXXXXXXXXXxxxxxxxxxxx
  24.             ORG 0030H  
  25. MAIN:
  26.  
  27.             SETB IE.7       ;ENABLE ALL INTERRUPT
  28.             SETB IE.0       ;ENABLE EXTERNAL INTERRUPT 0
  29.             SETB TCON.0     ;EDGE TRIGGER FOR INTERRUPT 0
  30.            
  31.            
  32.             LCALL INITIAL
  33.             LCALL LCD
  34.             LCALL T0
  35.             LCALL CLEAR
  36.             LCALL LCD1
  37.             LCALL T0
  38.             LCALL CLEAR
  39.             LCALL LCD_GREETING
  40.             LCALL CLEAR
  41.             LCALL T0
  42.             LCALL LCD_POGRESS
  43.             LCALL CLEAR
  44.             LCALL T0
  45.            
  46.        
  47.             LCALL TRAFFIC_LIGHT
  48.             LCALL CLEAR
  49.            
  50. ;xxxxxxxxxxxxXXXXXXXXXXXXXXXXXXXXXXXXXXXxxx
  51. ;INTRRUPT SERVICE SUBROUTINE
  52.  
  53. ISR:
  54.             MOV P0,#0FFH
  55.             MOV P2,#11110000B
  56.             CLR P0.0
  57.             CLR P0.3
  58.             CLR P0.6
  59.             CLR P2.5
  60.            
  61.            
  62.             MOV R2,#5
  63. A1:         CLR P2.3
  64.             LCALL T0
  65.             SETB P2.3
  66.             LCALL T0
  67.             DJNZ R2,A1
  68.            
  69.             RETI
  70.            
  71.                
  72. ;xxxxxxxxxxxxxXXXXXXXXXXXXXXXXXxxxxxxxxxx
  73. TRAFFIC_LIGHT:
  74.  
  75.                     MOV P0, #00H
  76.                     MOV P2, #010H
  77.                      
  78.  
  79. HERE1:             MOV P0,#0F6H         ;RED STRAIGHT&TURN LEFT
  80.                    MOV P2,#0CFH             ;RED TL2,GREEN TL3
  81.                    ACALL DELAY
  82.              
  83.                    
  84.                    MOV P0,#076H        ;RED STRAIGHT&TURN LEFT
  85.                    MOV P2,#0DFH       ;RED TL2,YELLOW TL3      
  86.                    ACALL DELAY
  87.  
  88.                  
  89.                    MOV P0,#09BH       ;GREEN STRAIGHT&TURN LEFT
  90.                    MOV P2,#0DFH      ;RED TL2,RED TL3
  91.                    ACALL DELAY
  92.  
  93.                    
  94.                    MOV P0,#0ABH       ;GREEN STRAIGHT, YELLOW LEFT
  95.                    MOV P2,#0DFH      ;RED TL2, RED TL3
  96.                    ACALL DELAY
  97.  
  98.  
  99.                    MOV P0,#0B3H        ;GREEN STRAIGHT. RED LEFT
  100.                    MOV P2,#07FH        ;GREEN TL2, RED TL3
  101.                    ACALL DELAY
  102.  
  103.                    MOV P0,#0B5H       ;YELLOW STRAIGHT, RED LEFT
  104.                    MOV P2,#0BFH       ;YELLOW TL2, RED TL3
  105.                    ACALL DELAY
  106.                    
  107.                    MOV P0, #0FFH
  108.                    MOV P2, #0FFH
  109.                    SJMP HERE1
  110.                    
  111.                  
  112.  
  113.                    RET
  114.                
  115. ;xxxxxxxxxxxxxXXXXXXXXXXXXXXXXXXXXXXXxxxxxxxxxxx
  116. LCD:                            ;NAME AND ID
  117.  
  118.             MOV A, #38H         ;INITIALIZE COMMAND
  119.             ACALL COMMAND
  120.             MOV A, #0EH
  121.             ACALL COMMAND
  122.             MOV A, #01H
  123.             ACALL COMMAND
  124.             MOV A, #06H
  125.             ACALL COMMAND
  126.  
  127.             MOV A,#080H         ;LHS START, FIRST LINE
  128.             ACALL COMMAND
  129.  
  130.             MOV R2,#4           ;LOOP 4 TIMES
  131.             MOV DPTR,#DNAME    
  132. BACK1:      CLR A
  133.             MOVC A, @A+DPTR
  134.    
  135.          
  136.             MOV P1, A
  137.             ACALL DATAWRT
  138.             INC DPTR
  139.             DJNZ R2, BACK1
  140.        
  141.             MOV A, #0C0H        ;LHS START, SECOND LINE
  142.             ACALL COMMAND
  143.          
  144.             MOV R2,#11          ;LOOP 11 TIMES
  145.             MOV DPTR, #DMATRIX_NO
  146. BACK2:      CLR A
  147.             MOVC A, @A+DPTR
  148.          
  149.             MOV P1, A
  150.             ACALL DATAWRT
  151.             INC DPTR
  152.             DJNZ R2, BACK2
  153.  
  154.             RET
  155. ;xxxxxxxxxxXXXXXXXXXXXXXXXXxxxxxxxxxxxxxxxx
  156. LCD1:                          ;NAME AND ID
  157.  
  158.            
  159.             MOV A,#080H         ;LHS START, FIRST LINE
  160.             ACALL COMMAND
  161.  
  162.             MOV R2,#6          ;LOOP 6 TIMES
  163.             MOV DPTR,#DNAME1    
  164. BACK3:      CLR A
  165.             MOVC A, @A+DPTR
  166.    
  167.          
  168.             MOV P1, A
  169.             ACALL DATAWRT
  170.             INC DPTR
  171.             DJNZ R2, BACK3
  172.        
  173.             MOV A, #0C0H        ;LHS START, SECOND LINE
  174.             ACALL COMMAND
  175.          
  176.             MOV R2,#11          ;LOOP 11 TIMES
  177.             MOV DPTR, #DMATRIX_NO1
  178. BACK4:      CLR A
  179.             MOVC A, @A+DPTR
  180.          
  181.             MOV P1, A
  182.             ACALL DATAWRT
  183.             INC DPTR
  184.             DJNZ R2, BACK4
  185.  
  186.             RET
  187. ;xxxxxxxxxxxxxXXXXXXXXXXXXXXXXXXXXXxxxxxxxxx
  188. LCD_GREETING:
  189.  
  190.             MOV A,#080H         ;LHS START, FIRST LINE
  191.             ACALL COMMAND
  192.             MOV R2,#10          ;LOOP 10 TIMES
  193.             MOV DPTR,#DGREET    
  194. BACK5:      CLR A
  195.             MOVC A, @A+DPTR
  196.             MOV P1, A
  197.             ACALL DATAWRT
  198.             INC DPTR
  199.             DJNZ R2, BACK5
  200.            
  201.             RET
  202.  
  203.  
  204. ;xxxxxxxxxxxxxXXXXXXXXXXXXXXXXXXXXXxxxxxxxxx
  205. LCD_POGRESS:
  206.  
  207.             MOV A,#080H         ;LHS START, FIRST LINE
  208.             ACALL COMMAND
  209.             MOV R2,#10          ;LOOP 10 TIMES
  210.             MOV DPTR,#DPOGRESS    
  211. BACK7:      CLR A
  212.             MOVC A, @A+DPTR
  213.             MOV P1, A
  214.             ACALL DATAWRT
  215.             INC DPTR
  216.             DJNZ R2, BACK7
  217.            
  218.             RET
  219. ;XxxxxxxxxXXXXXXXXXXXXxxxxxxxxxXXXXXXXXxxx
  220. ;LCD INITIAL
  221.  
  222. INITIAL:
  223.  
  224.     CLR P2.0
  225.     CLR P2.1
  226.     CLR P2.2
  227.     MOV A, #38H
  228.     ACALL COMMAND
  229.     MOV A,#0FH         ;VISIBLE BLINKING
  230.     MOV A,#01H         ;CLEAR SCREEN
  231.     ACALL COMMAND    
  232.     MOV A,#04H         ;SHIFT CURSOR RIGHT
  233.     ACALL COMMAND
  234.    
  235.     RET
  236.    
  237. ;COMMAND WRITE
  238.  
  239. COMMAND:
  240.  
  241.     MOV P1, A
  242.     CLR P2.0         ;RS=0 SELCET COMMAND REGISTER
  243.     CLR P2.1         ;RW=0 FOR WRITE
  244.     SETB P2.2        ;PULSE ON EN
  245.     ACALL DELAY4
  246.     CLR P2.2
  247.  
  248.     RET
  249. ;DATA WRITE
  250.  
  251. DATAWRT:
  252.  
  253.     MOV P1, A
  254.     SETB P2.0       ;RS=1 SELECT DATA
  255.     CLR P2.1        ;RW=0 FOR WRITE
  256.     SETB P2.2       ;PULSE ON EN
  257.     ACALL DELAY4
  258.     CLR P2.2        ;CLR EN
  259.  
  260.             RET
  261.            
  262. ;CLEAR DISPLAY
  263. CLEAR:
  264.             ACALL DELAY4
  265.             MOV A, #01H     ; CLEAR LCD SCREEN
  266.             ACALL COMMAND
  267.             ; SETB EN       ; ENABLE EN
  268.             ; CLR RS        ; RS=0 FOR CMD
  269.             ; MOV DATAWRT, #01H
  270.             ; CLR EN        ; DISABLE EN
  271.             RET
  272.                
  273. ;XxxxxxxxxXXXXXXXXxxxxxxxxxXXXXXXXXXXxxxx
  274. ;DELAYS
  275.            
  276. DELAY4:                 ;LCD DELAY
  277.      
  278.     MOV R5, #11
  279. L3: MOV R4, #24
  280. L2: MOV R3, #255
  281. L1: DJNZ R3, L1
  282.     DJNZ R4, L2
  283.     DJNZ R5, L3
  284.      
  285.             RET
  286.            
  287. ;1 SECONDS DELAY
  288.  
  289. T0: MOV TMOD,#01H       ;TIMER 0, MODE 1
  290.     MOV R3,#14
  291. A2: MOV TL0,#08
  292.     MOV TH0,#01
  293.     SETB TCON.4         ;START TIMER 0
  294.     JNB TCON.5,$        ;WAIT TIMER 0 OVERFLOW
  295.     CLR TCON.4          ;STOP TIMER
  296.     CLR TCON.5          ;CLEAR TIMER 0 OVERFLOW
  297.     DJNZ R3,A2
  298.     RET
  299.            
  300. ;DELAY 2 SECOND
  301.  
  302. DELAY:
  303.  
  304.     MOV TMOD,#10H       ;TIMER 1 MODE 1
  305.     MOV R4,#28
  306. A3: MOV TL1,#08
  307.     MOV TH1,#01
  308.     SETB TCON.6         ;START TIMER 1
  309.     JNB TCON.7,$        ;WAIT TIMER 1 OVERFLOW
  310.     CLR TCON.6          ;STOP TIMER 1
  311.     CLR TCON.7          ;CLR TIMER 1 OVERFLOW
  312.     DJNZ R4,A3
  313.     RET
  314.            
  315. ;xxxxxxxxxxxXXXXXXXXXXXXXXXXXXxxxxxxxxxxxx
  316.  
  317. DNAME:        DB 'EZAL'
  318. DMATRIX_NO    DB '51210110176'
  319. DNAME1:       DB 'SYAFIQ'
  320. DMATRIX_NO1   DB '51210110017'
  321. DGREET        DB 'T JUNCTION'  
  322. DPOGRESS      DB 'ON THE RUN'  
  323.  
  324.     END
  325.  
  326.  
Advertisement
Add Comment
Please, Sign In to add comment