m1


P O L I T E C H N I K A L U B E L S K A

w Lublinie

SPRAWOZDANIE

LABORATORIUM Z TECHNIK MIKROPROCESOROWYCH

Ćwiczenie nr 1

TEMAT: SKRZYŻOWANIE Z SYGNALIZACJĄ ŚWIETLNĄ

Data:

2008-02-25

RACHWAŁ MAREK ID6.3

ZAD. 1

Zróżnicowanie długości świecenia świateł dla drogi poziomej i pionowej (jedna z dróg główna).

0x08 graphic

Skrzyżowanie o timerze 0 przy czym przejazd poziomo dla samochodów jest dłuższy niż przejazd pionowo.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

166

167

168

169

170

171

172

173

174

175

176

177

178

179

180

0100:

0100: 75 B9 01

0103: 75 BC 4C

010A: 74 80

010C: F2

010D: 78 2B

010F: 79 29

0111:

0111: 7F DB

0113: 7A 01

0115:

0115: EA

0116: 31 47

0116: F3

0119: EA

011A: 31 51

011C: F2

011D: FB

011E: EA

011F: 31 5B

0121: FC

0122: EA

0123: 31 65

0125: FD

0126: EA

0127: 31 6F

0129: 12 B1 0C

012C: 12 81 00

012F:

012F: 74 14

013C: EB

013D: 6C

013E: FB

013F: F2

0140: DD ED

0142: 0A

0143: DF D0

0145: B0 CA

0147:

0147: B3

0148: 22

0149: F3 F5 F6

014D: DE EE F6

0151:

0151: B3

0152: 22

0153: F6 F6 FA

0157: F9 F9 FA

015B:

015B: B3

015C: 22

015D: 00 0B 0B

0161: 00 02 00

0165:

0165: B3

0166: 22

0167: 14 08 04

016F:

016F: 23

0170: C0 E0

0172: 31 EF

0174: F5 B2

0176: D0 E0

0178: 14

0179: 31 EF

17B: F5 B3

017D: 22

017E:

017E: 50 52 5A

018F:

018F: 5A 4D 49

019F: 5A 4F 4C

01A6:

01A6: 5A 4D 49

01B6: 43 5A 45

01BF:

01BF: 5A 4D 49

01CF: 43 5A 45

01DE:

01DE: 50 52 5A

01EF:

01EF: E3

01F0: 22

01F1: 01 7E 01

01F9: 01 DE 01

;TITLE 'DSM51-M01 SKRZYŻOWANIE'

;**************************************

;Program ustawia 8 kolejnych stanów świateł na skrzyżowaniu

;1 - przejazd samochodów poziomo (i przejście poziomo pieszych)

;2 - zmiana świateł - żółte dla samochodów jadących poziomo

; - zielone mrugające dla pieszych

;3 - zmiana świateł - czerwone dla samochodów jadących poziomo

; - czerwone dla pieszych

;4 - zmiana świateł - czerwone z żółtym dla samochodów w pionie

;5 - przejazd samochodów pionowo (i przejście pionowo pieszych)

;6 - zmiana świateł - żółte dla samochodów jadących pionowo

; - zielone mrugające dla pieszych

;7 - zmiana świateł - czerwone dla samochodów jadących pionowo

; - czerwone dla pieszych

;8 - zmiana świateł - czerwone z żółtym dla samochodów w poziomie

;**************************************

;Ustawienie układu 8255

;PORT A - WYJŚCIE MOD 0 - światła dla pieszych

;przejście pionowo

;A0 -> czerwone

;A1 -> zielone

;przejście poziomo

;A2 -> czerwone

;A3 -> zielone

;PORT B - WYJŚCIE MOD 0 - światła dla samochodów

;przejazd pionowo

;B3 -> czerwone

;B4 -> żółte

;B5 -> zielone

;przejazd poziomo

;B0 -> czerwone

;B1 -> żółte

;B2 -> zielone

;PORT C - WYJŚCIE - nieużywane

SET_8255 EQU 10000000B

;**************************************

LJMP START

;**************************************

ORG 100H

START:

MOV R0,#CS55D ;inicjalizacja 8255

MOV A,#SET_8255

MOVX @R0,A

MOV R0,#CS55A ;port A - światła dla pieszych

MOV R1,#CS55B ;port B - światła dla samochodów

;**************************************

;kolejne powtórzenie wszystkich stanów świateł na skrzyżowaniu

LOOP:

MOV R7,#8 ;8 stanów świateł na skrzyżowaniu

MOV R2,#1 ;stan pierwszy

;**************************************

;ustawienie kolejnego stanu świateł

STAN:

MOV A,R2 ;światła dla samochodów

ACALL SET_AUTO ;dla stanu numer (R2)

MOVX @R1,A

MOV A,R2 ;światła dla pieszych

ACALL SET_PEOPLE ;dla stanu numer (R2)

MOVX @R0,A

MOV R3,A ;zapamiętaj status pieszych

MOV A,R2 ;mruganie świateł dla pieszych

ACALL SET_BLINK ;dla stanu numer (R2)

MOV R4,A ;zapamiętaj status mrugania

MOV A,R2 ;czas świateł w stanie numer (R2)

ACALL SET_TIME ;N * 0.5 sek

MOV R5,A ;zapamiętaj czas

MOV A,R2 ;text na wyświetlacz LCD

ACALL SET_TEXT ;dla stanu numer (R2)

LCALL LCD_CLR

LCALL WRITE_TEXT

;**************************************

;odliczanie czasu jednego stanu z dokładnością 0.5 sek

;mruganie świateł dla pieszych jeżli to konieczne

;z częstotliwością 1Hz

BLINK:

MOV A,#20

LCALL DELAY_100MS

MOV A,R3 ;mruganie świateł dla pieszych

XRL A,R4 ;-zmiana stanu na przeciwne

MOV R3,A ;dla wybranych świateł

MOVX @R0,A

DJNZ R5,BLINK ;czas = R5 * 0.5 sek

INC R2 ;kolejny stan

DJNZ R7,STAN

SJMP LOOP ;rozpocznij od pierwszego stanu

;**************************************

;dane do zapalenia świateł dla samochodów w 8 kolejnych stanach

SET_AUTO:

MOVC A,@A+PC

RET

DB 11110011B,11110101B,11110110B,11100110B

DB 11011110B,11101110B,11110110B,11110100B

;**************************************

;dane do zapalenia świateł dla pieszych w 8 kolejnych stanach

SET_PEOPLE:

MOVC A,@A+PC

RET

DB 11110110B,11110110B,11111010B,11111010B

DB 11111001B,11111001B,11111010B,11111010B

;**************************************

;dane do mrugania świateł dla pieszych w 8 kolejnych stanach

;1-mruganie odpowiedniego światła

SET_BLINK:

MOVC A,@A+PC

RET

DB 00000000B,00001000B,00000000B,00000000B

DB 00000000B,00000010B,00000000B,00000000B

;**************************************

;czas kolejnych stanów wyrażony w 0.5 sek

SET_TIME:

MOVC A,@A+PC

RET

DB 25,8,4,4,15,8,4,4

;**************************************

;pobranie adresu tekstu dla kolejnego stanu

SET_TEXT:

RL A

PUSH ACC

ACALL SET_TXT

MOV DPL,A

POP ACC

DEC A

ACALL SET_TXT

MOV DPH,A

RET

;**************************************

;teksty opisujące stan na skrzyżowaniu w kolejnych stanach

TEXT1:

DB 'PRZEJAZD POZIOMO',0

TEXT2:

DB 'ZMIANA SWIATEL '

DB 'ZOLTE ',0

TEXT3:

DB 'ZMIANA SWIATEL '

DB 'CZERWONE',0

TEXT4:

DB 'ZMIANA SWIATEL '

DB 'CZERWONE ZOLTE',0

TEXT5:

DB 'PRZEJAZD PIONOWO',0

;**************************************

SET_TXT:

MOVC A,@A+PC

RET

DW TEXT1,TEXT2,TEXT3,TEXT4

DW TEXT5,TEXT2,TEXT3,TEXT4

;END

ZAD. 2

Ciągłe mruganie świateł żółtych.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

0100:

0100: 75 B9 01

0103: 75 BC 4C

010A: 74 80

010C: F2

010D: 78 2B

010F: 79 29

0109: 74 FF

0108: F2

010C:

010C: 7F ED

010E: F3

010F: 74 05

0111:12 B1 12

0114: 74 FF

0116: F3

0117: 74 05

0119: 12 81 12

011C: B0 EE

SET_8255 EQU 10000000B

;**************************************

LJMP START

;**************************************

ORG 100H

START:

MOV R0,#CS55D ;inicjalizacja 8255

MOV A,#SET_8255

MOVX @R0,A

MOV R0,#CS55A ;port A - światła dla pieszych

MOV R1,#CS55B ;port B - światła dla samochodów

MOV A,#11111111B

MOV @R0,A

LOOP:

MOV A,#11101101B

MOVX @R1,A

MOV A,#5

LCALL DELAY_100MS

MOV A,#11111111B

MOVX @R1,A

MOV A,#5

LCALL DELAY_100MS

SJMP LOOP

ZAD. 3

Działanie skrzyżowania jak w zad.1 ale naciśnięcie na klawiaturze matrycowej przycisku „0” powoduje włączenie stanu alarmowego (mruganie świateł żółtych). Wciśnięcie przycisku „1” powoduje powrót do normalnej pracy.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

166

167

168

169

170

171

172

173

174

175

176

177

178

179

180

181

182

183

184

185

186

187

188

189

190

191

192

193

194

195

196

197

198

199

200

201

202

203

204

205

206

207

208

0100:

0100: 75 B9 01

0103: 75 BC 4C

010A: 74 80

010C: F2

010D: 78 2B

010F: 79 29

0111:

0111: 7F DB

0113: 7A 01

0115:

0115: EA

0116: 31 47

0116: F3

0119: EA

011A: 31 51

011C: F2

011D: FB

011E: EA

011F: 31 5B

0121: FC

0122: EA

0123: 31 65

0125: FD

0126: EA

0127: 31 6F

0129: 12 B1 0C

012C: 12 81 00

012F:

012F: 74 14

013C: EB

013D: 6C

013E: FB

013F: F2

0140: DD ED

0142: 0A

0143: DF D0

0145: B0 CA

0147:

0147: B3

0148: 22

0149: F3 F5 F6

014D: DE EE F6

0151:

0151: B3

0152: 22

0153: F6 F6 FA

0157: F9 F9 FA

015B:

015B: B3

015C: 22

015D: 00 0B 0B

0161: 00 02 00

0165:

0165: B3

0166: 22

0167: 14 08 04

016F:

016F: 23

0170: C0 E0

0172: 31 EF

0174: F5 B2

0176: D0 E0

0178: 14

0179: 31 EF

17B: F5 B3

017D: 22

017E:

017E: 50 52 5A

018F:

018F: 5A 4D 49

019F: 5A 4F 4C

01A6:

01A6: 5A 4D 49

01B6: 43 5A 45

01BF:

01BF: 5A 4D 49

01CF: 43 5A 45

01DE:

01DE: 50 52 5A

01EF:

01EF: E3

01F0: 22

01F1: 01 7E 01

01F9: 01 DE 01

;TITLE 'DSM51-M01 SKRZYŻOWANIE'

;**************************************

;Program ustawia 8 kolejnych stanów świateł na skrzyżowaniu

;1 - przejazd samochodów poziomo (i przejście poziomo pieszych)

;2 - zmiana świateł - żółte dla samochodów jadących poziomo

; - zielone mrugające dla pieszych

;3 - zmiana świateł - czerwone dla samochodów jadących poziomo

; - czerwone dla pieszych

;4 - zmiana świateł - czerwone z żółtym dla samochodów w pionie

;5 - przejazd samochodów pionowo (i przejście pionowo pieszych)

;6 - zmiana świateł - żółte dla samochodów jadących pionowo

; - zielone mrugające dla pieszych

;7 - zmiana świateł - czerwone dla samochodów jadących pionowo

; - czerwone dla pieszych

;8 - zmiana świateł - czerwone z żółtym dla samochodów w poziomie

;**************************************

;Ustawienie układu 8255

;PORT A - WYJŚCIE MOD 0 - światła dla pieszych

;przejście pionowo

;A0 -> czerwone

;A1 -> zielone

;przejście poziomo

;A2 -> czerwone

;A3 -> zielone

;PORT B - WYJŚCIE MOD 0 - światła dla samochodów

;przejazd pionowo

;B3 -> czerwone

;B4 -> żółte

;B5 -> zielone

;przejazd poziomo

;B0 -> czerwone

;B1 -> żółte

;B2 -> zielone

;PORT C - WYJŚCIE - nieużywane

SET_8255 EQU 10000000B

;**************************************

LJMP START

;**************************************

ORG 100H

START:

MOV R0,#CS55D ;inicjalizacja 8255

MOV A,#SET_8255

MOVX @R0,A

MOV R0,#CS55A ;port A - światła dla pieszych

MOV R1,#CS55B ;port B - światła dla samochodów

;**************************************

;kolejne powtórzenie wszystkich stanów świateł na skrzyżowaniu

LOOP:

MOV R7,#8 ;8 stanów świateł na skrzyżowaniu

MOV R2,#1 ;stan pierwszy

;**************************************

;ustawienie kolejnego stanu świateł

STAN:

MOV A,R2 ;światła dla samochodów

ACALL SET_AUTO ;dla stanu numer (R2)

MOVX @R1,A

MOV A,R2 ;światła dla pieszych

ACALL SET_PEOPLE ;dla stanu numer (R2)

MOVX @R0,A

MOV R3,A ;zapamiętaj status pieszych

MOV A,R2 ;mruganie świateł dla pieszych

ACALL SET_BLINK ;dla stanu numer (R2)

MOV R4,A ;zapamiętaj status mrugania

MOV A,R2 ;czas świateł w stanie numer (R2)

ACALL SET_TIME ;N * 0.5 sek

MOV R5,A ;zapamiętaj czas

MOV A,R2 ;text na wyświetlacz LCD

ACALL SET_TEXT ;dla stanu numer (R2)

LCALL LCD_CLR

LCALL WRITE_TEXT

;**************************************

;odliczanie czasu jednego stanu z dokładnością 0.5 sek

;mruganie świateł dla pieszych jeżli to konieczne

;z częstotliwością 1Hz

BLINK:

MOV A,#10

L1:

JNB TF0,3

MOV TH0,#76

CLR TF0

DJNZ ACC,L1

MOV A,R3 ;mruganie świateł dla pieszych

XRL A,R4 ;-zmiana stanu na przeciwne

MOV R3,A ;dla wybranych świateł

MOVX @R0,A

DJNZ R5,BLINK ;czas = R5 * 0.5 sek

INC R2 ;kolejny stan

DJNZ R7,STAN

LJMP LOOP ;rozpocznij od pierwszego stanu

;**************************************

AWARIA:

MOV A,#11111111B

MOVX @R0,A

MOV R1,#CS55B

MOV A,#11101101B

MOVX @R1,A

MOV A,#5

LCALL DELAY_100MS

MOV A,#11111111B

MOVX @R1,A

MOV A,#5

LCALL DELAY_100MS

MOV R1,#CSKBO

MOVX A,@R1

JNB ACC.1,LOOP

LJMP AWARIA

;***************************************

;dane do zapalenia świateł dla samochodów w 8 kolejnych stanach

SET_AUTO:

MOVC A,@A+PC

RET

DB 11110011B,11110101B,11110110B,11100110B

DB 11011110B,11101110B,11110110B,11110100B

;**************************************

;dane do zapalenia świateł dla pieszych w 8 kolejnych stanach

SET_PEOPLE:

MOVC A,@A+PC

RET

DB 11110110B,11110110B,11111010B,11111010B

DB 11111001B,11111001B,11111010B,11111010B

;**************************************

;dane do mrugania świateł dla pieszych w 8 kolejnych stanach

;1-mruganie odpowiedniego światła

SET_BLINK:

MOVC A,@A+PC

RET

DB 00000000B,00001000B,00000000B,00000000B

DB 00000000B,00000010B,00000000B,00000000B

;**************************************

;czas kolejnych stanów wyrażony w 0.5 sek

SET_TIME:

MOVC A,@A+PC

RET

DB 25,8,4,4,15,8,4,4

;**************************************

;pobranie adresu tekstu dla kolejnego stanu

SET_TEXT:

RL A

PUSH ACC

ACALL SET_TXT

MOV DPL,A

POP ACC

DEC A

ACALL SET_TXT

MOV DPH,A

RET

;**************************************

;teksty opisujące stan na skrzyżowaniu w kolejnych stanach

TEXT1:

DB 'PRZEJAZD POZIOMO',0

TEXT2:

DB 'ZMIANA SWIATEL '

DB 'ZOLTE ',0

TEXT3:

DB 'ZMIANA SWIATEL '

DB 'CZERWONE',0

TEXT4:

DB 'ZMIANA SWIATEL '

DB 'CZERWONE ZOLTE',0

TEXT5:

DB 'PRZEJAZD PIONOWO',0

;**************************************

SET_TXT:

MOVC A,@A+PC

RET

DW TEXT1,TEXT2,TEXT3,TEXT4

DW TEXT5,TEXT2,TEXT3,TEXT4

;END



Wyszukiwarka

Podobne podstrony:
11 M1 SiwońM PacynaK ZAD11
m1 penetration iraq 2008
ASK m1
5 M1 OsowskiM BalaR ZAD5 doc
1 3 m1 L6
ECCC Sylabus CS M1 C
ARKUSZ DIAGNOSTYCZNY GM M1 125
M1 6 B1 3 F1 2 D1 5
CVSM LM ZIP M1
m1
GM M1 142 Rozwiazania zadan i s Nieznany
kotelko 1 2 M1 2 id 248905 Nieznany
poematy m1 komory 13 24
m1 10
M1
M1 dobrze

więcej podobnych podstron