sp3ctrm5tr

8051 TRAFFIC LIGHT

Oct 29th, 2011
263
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. P0  EQU 080H ; TRAFFIC
  2. P1  EQU 090H ; LCD D0-D7
  3. P2  EQU 0A0H ; TRAFFIC, RS, RW, EN
  4. P3  EQU 0B0H
  5.  
  6. RS  EQU 0A5H ; RS is connected to P2.5
  7. RW  EQU 0A6H ; RW is connected to P2.6
  8. EN  EQU 0A7H ; E is connected to P2.7
  9.  
  10. TL0  EQU 08AH
  11. TH0  EQU 08CH
  12. TL1  EQU 08BH
  13. TH1  EQU 08DH
  14. TCON EQU 088H ; TIMER CONTROL
  15.               ; BIT ADDRESSABLE: X.7 -> X.0
  16.               ; TF1-TR1-TF0-TR0-IE1-IT1-IE0-IT0
  17.              
  18. TMOD EQU 089H ; GATE - C/T - M1 - M0 - GATE - C/T - M1 - M0
  19.               ; |<-------T1------->|   |<-------T0------->|
  20.  
  21. IE  EQU 0A8H ; INTERRUPT ENABLE
  22.              ; BIT ADDRESSABLE: X.7 -> X.0
  23.              ; EA-X-X-ES-ET1-EX1-ET0-EX0
  24.  
  25. NR  EQU 080H ; P0.0
  26. NY  EQU 081H ; P0.1
  27. NG  EQU 082H ; P0.2
  28.  
  29. ER  EQU 083H ; P0.3
  30. EY  EQU 084H ; P0.4
  31. EG  EQU 085H ; P0.5
  32.  
  33. SR  EQU 086H ; P0.6
  34. SY  EQU 087H ; P0.7
  35. SG  EQU 0A0H ; P2.0
  36.  
  37. WR  EQU 0A1H ; P2.1
  38. WY  EQU 0A2H ; P2.2
  39. WG  EQU 0A3H ; P2.3
  40.  
  41.  
  42. ;---------==========----------==========---------=========---------
  43. ;       PROCESSOR INTERRUPT AND RESET VECTORS
  44. ;---------==========----------==========---------=========---------
  45.  
  46.     ORG 0000H ; SYSTEM RESET
  47.     LJMP MAIN
  48.  
  49.     ORG 0003H ; EXTERNAL INTERRUPT 0
  50.     LJMP ISR
  51.  
  52. ;---------==========----------==========---------=========---------
  53. ;       MAIN PROGRAM
  54. ;---------==========----------==========---------=========---------
  55.  
  56.     ORG 0030H
  57. MAIN:
  58.     SETB IE.7   ; ENABLE ALL INTERRUPT
  59.     SETB IE.0   ; ENABLE EXTERNAL INTERUPT 0
  60.     SETB TCON.0 ; EDGE TRIGGER FOR INTERRUPT 0
  61.  
  62.     LCALL LCD_INIT
  63.     LCALL LCD_NAME1
  64.     LCALL T0
  65.     LCALL CLEAR
  66.     LCALL LCD_NAME2
  67.     LCALL T0
  68.     LCALL CLEAR
  69.     LCALL LCD_START
  70.     LCALL T0
  71.     LCALL CLEAR
  72.  
  73.     LCALL TL
  74.    
  75.     LCALL CLEAR
  76.     LCALL LCD_END
  77.     LCALL DELAY
  78.    
  79. ;---------==========----------==========---------=========---------
  80. ;       INTERRUPT SERVICE ROUTINE FOR PEDESTRIAN
  81. ;---------==========----------==========---------=========---------
  82.  
  83. ISR:
  84.     MOV P0, #00H
  85.     MOV P2, #00H
  86.     SETB NR
  87.     SETB ER
  88.     SETB SR
  89.     SETB WR
  90.    
  91.     MOV R2, #5
  92. A1: CLR P2.4
  93.     LCALL T0
  94.     SETB P2.4
  95.     LCALL T0
  96.     DJNZ R2, A1
  97.    
  98.     RETI
  99.  
  100. ;---------==========----------==========---------=========---------
  101. ;   TRAFFIC LIGHTS
  102. ;---------==========----------==========---------=========---------
  103.  
  104. TL:
  105.     MOV P0, #00H
  106.     MOV P2, #010H
  107.        
  108.     SETB NR
  109.     SETB ER
  110.     SETB SR
  111.     SETB WR
  112.     ACALL DELAY
  113.  
  114.     CLR NR
  115.     SETB NG
  116.     ACALL DELAY
  117.    
  118.     ; NORTH TO EAST
  119.     ;--------------
  120.     CLR NG         
  121.     SETB NY
  122.     ACALL DELAY
  123.     CLR NY
  124.     SETB NR
  125.  
  126.     CLR ER
  127.     SETB EG
  128.     ACALL DELAY
  129.    
  130.     ; EAST TO SOUTH
  131.     ;--------------
  132.     CLR EG
  133.     SETB EY
  134.     ACALL DELAY
  135.     CLR EY
  136.     SETB ER
  137.  
  138.     CLR SR
  139.     SETB SG
  140.     ACALL DELAY
  141.    
  142.     ; SOUTH TO WEST
  143.     ;--------------
  144.     CLR SG
  145.     SETB SY
  146.     ACALL DELAY
  147.     CLR SY
  148.     SETB SR
  149.  
  150.     CLR WR
  151.     SETB WG
  152.     ACALL DELAY
  153.    
  154.     ; LOOPING BACK
  155.     ;-------------
  156.     CLR WG
  157.     SETB WY
  158.     ACALL DELAY
  159.     CLR WY
  160.     SETB WR
  161.    
  162.     MOV P0, #0FFH
  163.     MOV P2, #0FFH
  164.  
  165.     RET
  166.    
  167. ;---------==========----------==========---------=========---------
  168. ;       LCD DATA
  169. ;---------==========----------==========---------=========---------
  170.  
  171. LCD_NAME1:
  172.     MOV A, #085H    ; FIRST LINE
  173.     ACALL COMMAND
  174.     MOV R2,#6
  175.     MOV DPTR,#NAME01
  176. BACK1:  CLR A
  177.     MOVC A, @A+DPTR
  178.     MOV P1,A
  179.     ACALL DATAWRT
  180.     INC DPTR
  181.     DJNZ R2, BACK1
  182.  
  183.     MOV A, #0C2H    ; SECOND LINE
  184.     ACALL COMMAND
  185.     MOV R3,#11 
  186.     MOV DPTR,#ID01
  187. BACK2:  CLR A
  188.     MOVC A, @A+DPTR
  189.     MOV P1,A
  190.     ACALL DATAWRT
  191.     INC DPTR
  192.     DJNZ R3, BACK2
  193.     RET
  194.    
  195. ;==================================================================
  196.  
  197. LCD_NAME2:
  198.     MOV A, #084H    ; FIRST LINE
  199.     ACALL COMMAND
  200.     MOV R2,#8
  201.     MOV DPTR,#NAME02
  202. BACK3:  CLR A
  203.     MOVC A, @A+DPTR
  204.     MOV P1,A
  205.     ACALL DATAWRT
  206.     INC DPTR
  207.     DJNZ R2, BACK3
  208.  
  209.     MOV A, #0C2H    ; SECOND LINE
  210.     ACALL COMMAND
  211.     MOV R3,#11 
  212.     MOV DPTR,#ID02
  213. BACK4:  CLR A
  214.     MOVC A, @A+DPTR
  215.     MOV P1,A
  216.     ACALL DATAWRT
  217.     INC DPTR
  218.     DJNZ R3, BACK4 
  219.     RET
  220.  
  221. ;==================================================================
  222.  
  223. LCD_START:
  224.     MOV A, #084H    ; FIRST LINE
  225.     ACALL COMMAND
  226.     MOV R2,#5
  227.     MOV DPTR,#DSTART
  228. BACK5:  CLR A
  229.     MOVC A, @A+DPTR
  230.     MOV P1,A
  231.     ACALL DATAWRT
  232.     INC DPTR
  233.     DJNZ R2, BACK5
  234.     RET
  235.    
  236. ;==================================================================
  237.  
  238. LCD_END:
  239.     MOV A, #085H
  240.     ACALL COMMAND
  241.     MOV R2,#3
  242.     MOV DPTR,#DEND
  243. BACK7:  CLR A
  244.     MOVC A, @A+DPTR
  245.     MOV P1,A
  246.     ACALL DATAWRT
  247.     INC DPTR
  248.     DJNZ R2, BACK7
  249.     RET
  250.    
  251. ;---------==========----------==========---------=========---------
  252. ;       LCD COMMAND
  253. ;---------==========----------==========---------=========---------
  254.  
  255. ; INITIALIZATION OF LCD
  256. ;----------------------
  257. LCD_INIT:
  258.     CLR RS
  259.     CLR RW
  260.     CLR EN
  261.     MOV A, #38H     ; INITIALIZE, 2-LINES
  262.     ACALL COMMAND
  263.     MOV A, #0FH     ; TURN ON VISIBLE BLINKING-BLOCK CCURSOR
  264.     ACALL COMMAND
  265.     MOV A, #01H     ; CLEAR LCD SCREEN
  266.     ACALL COMMAND
  267.     MOV A, #06H     ; SHIFT CURSOR RIGHT
  268.     ACALL COMMAND
  269.     RET
  270.    
  271. ; COMMAND WRITE ROUTINE
  272. ;----------------------
  273. COMMAND:
  274.     MOV P1, A   ; MOVE ACC DATA TO PORT
  275.     CLR RS      ; RS=0 FOR CMD
  276.     CLR RW      ; RW=0 FOR WRITE
  277.     SETB EN     ; H->L PULSE ON EN
  278.     ACALL LCD_DELAY
  279.     CLR EN
  280.     RET
  281.  
  282. ; DATA WRITE ROUTINE
  283. ;-------------------
  284. DATAWRT:
  285.     MOV P1, A   ; MOVE ACC DATA TO PORT
  286.     SETB RS     ; RS=1 FOR DATA
  287.     CLR RW      ; RW=0 FOR WRITE
  288.     SETB EN     ; H->L PULSE ON EN
  289.     ACALL LCD_DELAY
  290.     CLR EN
  291.     RET
  292.    
  293. ; DISPLAY CLEAR
  294. ;---------------
  295. CLEAR:
  296.     ACALL LCD_DELAY
  297.     MOV A, #01H     ; CLEAR LCD SCREEN
  298.     ACALL COMMAND
  299.     RET
  300.        
  301. ;---------==========----------==========---------=========---------
  302. ;       DELAYS
  303. ;---------==========----------==========---------=========---------
  304.  
  305. ; DELAY 1 SECOND
  306. ;----------------
  307. T0: MOV TMOD,#01H   ; TIMER-0 MODE-1 (16-BITS)
  308.     MOV R3,#14
  309. A2: MOV TL0,#08
  310.     MOV TH0,#01
  311.     SETB TCON.4     ; START TIMER-0
  312.     JNB TCON.5,$    ; WAIT FOR TIMER-0 OVERFLOW
  313.     CLR TCON.4      ; STOP TIMER-0
  314.     CLR TCON.5      ; CLEAR TIMER-0 OVERFLOW
  315.     DJNZ R3,A2
  316.     RET
  317.  
  318. ; DELAY 2 SECOND
  319. ;---------------
  320. DELAY:
  321.     MOV TMOD,#10H   ; TIMER-1 MODE-1 (16-BITS)
  322.     MOV R4,#28
  323. A3: MOV TL1,#08
  324.     MOV TH1,#01
  325.     SETB TCON.6     ; START TIMER-1
  326.     JNB TCON.7,$    ; WAIT FOR TIMER-1 OVERFLOW
  327.     CLR TCON.6      ; STOP TIMER-1
  328.     CLR TCON.7      ; CLEAR TIMER-1 OVERFLOW
  329.     DJNZ R4,A3
  330.     RET
  331.     ; MOV R3,#1AH
  332. ; J3:   MOV R1,#0FFH
  333. ; J2:   MOV R2,#0FFH
  334. ; J1:   NOP
  335.     ; DJNZ R2,J1
  336.     ; DJNZ R1,J2
  337.     ; DJNZ R3,J3
  338.     ; RET
  339.            
  340. LCD_DELAY:
  341.     MOV R5, #5
  342. H1: MOV R6, #50
  343. H2: MOV R7, #200
  344. H3: DJNZ R7, H3
  345.     DJNZ R6, H2
  346.     DJNZ R5, H1
  347.     RET        
  348.  
  349. ;---------==========----------==========---------=========---------
  350. ;TABLE
  351. ;---------==========----------==========---------=========---------
  352.  
  353.     ORG 200H
  354. NAME01  DB 'SYAHIR'
  355. ID01    DB '51211110052'   
  356. NAME02  DB 'ISKANDAR'
  357. ID02    DB '51211110112'
  358. DSTART  DB 'START'
  359. DCROSS  DB 'CROSS'
  360. DEND    DB 'END'
  361.  
  362. ;---------==========----------==========---------=========---------
  363.  
  364.     END
  365.  
  366.  
  367.  
Advertisement
Add Comment
Please, Sign In to add comment