Viết bằng trình hợp ngữ, ta dƣợc code điều khiển nhƣ sau: org 00h
mov SCON, #50h //truyền dữ liệu 8 bit, 1 bit stop cho phép thu mov TMOD, #20h //chọn Timer 1, chế độ 2 (tự động nạp lại) mov TH1, #0FDh //chọn tốc độ Baud 9600
setb TR1 //khởi động Timer 1 jmp main
org 0FFh main:
jnb RI, $ //chờ đến khi nhận dữ liệu cuối cùng clr RI //chờ sẵn cho 1 byte kế tiếp
mov A, SBUF //gán dữ liệu cho thanh ghi A mo_den1:
cjne A, #'a', tat_den1 //so sánh, nếu A= „a‟ thì mở đèn 1 clr P1.0 nếu sai thì nhảy xuống lệnh tiếp theo jmp main
tat_den1:
setb P1.0 jmp main mo_den2:
cjne A, #'c', tat_den2 //so sánh, nếu A= „c‟ thì mở đèn 2 clr P1.1
jmp main tat_den2:
cjne A, #'d', mo_den3 //so sánh, nếu A= „d‟ thì tắt đèn 2 setb P1.1
jmp main mo_den3:
cjne A, #'e', tat_den3 //so sánh, nếu A= „e‟ thì mở đèn 3 clr P1.2
jmp main tat_den3:
cjne A, #'f', mo_den4 //so sánh, nếu A= „f‟ thì tắt đèn 3 setb P1.2
jmp main mo_den4:
cjne A, #'g', tat_den4 //so sánh, nếu A= „g‟ thì mở đèn 4 clr P1.3
jmp main tat_den4:
cjne A, #'h', mo_den5 //so sánh, nếu A= „h‟ thì tắt đèn 4 setb P1.3
jmp main mo_den5:
cjne A, #'i', tat_den5 //so sánh, nếu A= „i‟ thì mở đèn 5 clr P1.4
jmp main tat_den5:
cjne A, #'j', mo_den6 //so sánh, nếu A= „j‟ thì tắt đèn 5 setb P1.4
jmp main mo_den6:
cjne A, #'k', tat_den6 //so sánh, nếu A= „k‟ thì mở đèn 6 clr P1.5
jmp main tat_den6:
cjne A, #'l', mo_den7 //so sánh, nếu A= „l‟ thì tắt đèn 6 setb P1.5
jmp main mo_den7:
cjne A, #'m', tat_den7 //so sánh, nếu A= „m‟ thì mở đèn 7 clr P1.6
jmp main tat_den7:
cjne A, #'n', mo_den8 //so sánh, nếu A= „n‟ thì tắt đèn 7 setb P1.6
jmp main mo_den8:
cjne A, #'o', tat_den8 //so sánh, nếu A= „o‟ thì mở đèn 8 clr P1.7
jmp main tat_den8:
cjne A, #'p', reset_mach //so sánh, nếu A= „p‟ thì tắt đèn 8 setb P1.7
jmp main reset_mach:
cjne A, #'q', main //so sánh, nếu A= „q‟ thì tắt hết đèn. setb P1.0 setb P1.1 setb P1.2 setb P1.3 setb P1.4 setb P1.5 setb P1.6 setb P1.7 jmp main end