Professional Documents
Culture Documents
MỤC TIÊU:
- Giảm độ phức tạp và cải thiện tính rõ ràng của
chương trình.
- Dễ dàng gỡ rối, sửa chữa cũng như thay đổi.
- Thể hiện các cấu trúc tương tự như các phát biểu của
ngôn ngữ cấp cao trong lập trình hợp ngữ qua các
lưu đồ.
Mũi tên chỉ đường đi của chương trình (Program flow arrow)
ENTER
ENTER
Statement
Condition N
true?
Condition N
Y
true?
Statement EXIT
Y
EXIT
Bài giảng môn Vi xử lý
GV: Lê Thị Kim Anh
Chương 3
KỸ THUẬT LẬP TRÌNH THEO CẤU TRÚC
CẤU TRÚC CHƯƠNG TRÌNH
CÁC PHÁT BIỂU CÁC VÒNG LẶP SỰ LỰA CHỌN
(statement) (loop) (choice)
ENTER
ENTER
Y N N N
Condition Expression Expression
true? 1 2
Y Y
Statement1 Statement2 Statement1
Statement1
EXIT EXIT
SBRC Rr,b
N RJMP Continue
BIT(b) = 0?
Statement
Continue: ….
Y
Statement
SBIC P,b
RJMP Continue
Statement
Continue
Continue: ….
SBRS Rr,b
N RJMP Continue
BIT(b) = 1?
(Statement)
Continue: ….
Y
Statement
SBIS P,b
RJMP Continue
(Statement)
Continue Continue: ….
IN R1,PINA
N
PA0 = 0? SBRC R1,0
RJMP Continue
Y
N
PA0 = 1? SBIS PINA,0
RJMP Continue
Y LDI R16,$55
55H PORTB OUT PORTB,R16
Continue: …..
BRBC flag,Label
RJMP Continue
N
flag = 0? Label: (Statement)
Continue: ….
Y Ví dụ flag=Zero có thể sử dụng các lệnh
tương đương sau:
Label: Statement
BRBC 0,Label {BRNE Label}
RJMP Continue
Label: (Statement)
Continue: ….
Continue
N
Rd=Rr? CPSE Rd,Rr
Y
RJMP Continue
Statement (Statement)
Continue: ….
Continue
N
R16=R18? CPSE R16, R18
RJMP Continue
Y
LDI R20,’Y’
‘Y’= $59 PORTB
OUT PORTB, R20
Continue:
Continue
Bài giảng môn Vi xử lý
GV: Lê Thị Kim Anh
Chương 3
Phát biểu IF … THEN …ELSE
Kiểm tra điều kiện bằng/ không bằng
SBRC/S, SBIC/S
BRB_flag_C, BRB_flag_S
SBIC P, b
N
BIT = 0? RJMP FALSE(N)
TRUE(Y):
(Statement1)
Y
RJMP Continue
Statement2 Statement1 FALSE(N):
(Statement2)
Continue: …..
SBIS PINA, 0
RJMP FALSE(N)
N
PA0 = 1? TRUE(Y):
LDI R16,$CC
OUT PORTB,R16
Y
RJMP Continue
33H PORTC CCH PORTB FALSE(N):
LDI R16,$33
OUT PORTC,R16
Continue: …..
BRSH/BRGE TRUE(Y)
N Flag
C=0{S=0}? FALSE(N):
(Statement 2)
Y RJMP Continue
TRUE(Y):
Statement2 Statement1
(Statement 1)
Continue: ……..
BRLO/BRLT TRUE(Y)
N Flag
C=1{S=1}? FALSE(N):
(Statement 2)
Y RJMP Continue
TRUE(Y):
Statement2 Statement1
(Statement 1)
Continue: ……..
DELAY:
LDI R16, 0xFF ;1MC (m)
AGAIN:
NOP ;1MC Điều kiện đúng:
NOP ;1MC (1+1+1+2)*254 {MC}
DEC R16 ;1MC Điều kiện không thỏa:
(1+1+1+1) {MC}
BRNE AGAIN ;(2/1)MC
RET ;4MC
Ri=A
….
CASE0: CPI Ri,0
BRNE CASE1
(Statement 0)
CASE1: CPI Ri,1
BRNE CASE2
(Statement 1)
CASE2: CPI Ri,2
BRNE CASE3
(Statement 2)
….
Bài giảng môn
môn Vi
Vi xử lý
lý
Thị Kim Anh
GV: Lê Thị
Chương 3
Phát biểu CASE
VD9: Viết chương trình đọc trạng thái mức logic tín hiệu trên 2 chân PA0 và PA1
và thực hiện các tác vụ theo bảng bên dưới. Giả sử chức năng của các port đã
được thiết lập.
PA2-PA0 Mã ASCII
000 ‘0’ = $30
001 ‘1’ = $31
010 ‘2’ = $32
011 ‘3’ = $33
100 ‘4’ = $34
101 ‘5’ = $35
110 ‘6’ = $36
111 ‘7’ = $37
Z=(TABLE<<1)+OFFSET
OFFSET Bài giảng môn Vi xử lý
GV: Lê Thị Kim Anh
Chương 3
PHƯƠNG PHÁP TRA BẢNG
LDI R16,0
OUT DDRA,R16
LDI R16,$FF
OUT PORTD,R16
OUT DDRD,R16
LOOP: IN R20,PINA
ANDI R20,$07
LDI ZL,LOW(ASCII<<1)
LDI ZH,HIGH(ASCII<<1)
ADD ZL,R20
BRCC FINAL
INC ZH
FINAL: LPM R1,Z
OUT PORTD,R1
RJMP LOOP
ASCII: .DB ‘0’,’1’,’2’,’3’,’4’,’5’,’6’,’7’
Bài giảng môn Vi xử lý
GV: Lê Thị Kim Anh