Danh mục

Lập trình hệ thống nhúng

Số trang: 14      Loại file: pdf      Dung lượng: 198.62 KB      Lượt xem: 18      Lượt tải: 0    
Thư viện của tui

Xem trước 2 trang đầu tiên của tài liệu này:

Thông tin tài liệu:

hệ thống nhúng nó dành cho những công việc phức tạp lúc đó viết trên hệ điều hành của nó sẽ đơn giản hơn là mình lập trình thông thường. mình lấy ví dụ đơn giản như khi lập trình giao diện đồ họa trên C sẽ khó khăn hơn là lập trình giao diện đồ hoạ trên C# vì nó hỗ trợ nhiều hơn lập trình nhúng cũng như vậy
Nội dung trích xuất từ tài liệu:
Lập trình hệ thống nhúngL P TRÌNH H TH NGNHÚNG BÙI QU C B OConcurrency (Tác v ch y ñ ngth i) M t h th ng có th có 2 hay nhi u tác v ch y ñ c l p nhau. VD: M t h th ng dùng 8051 ñ : B t/T t 1 LED g n vào P1.0 sau chu kỳ 500 ms. Cho 3 LED vàng-xanh-ñ l n lư t sáng-t t sau chu kỳ 500 ms Chia 2 tác v trên thành 2 máy tr ng thái SM ñ ng b v i chu kỳ 500 ms 2 BM K Thu t ði n T - ðH Bách Khoa TP.HCM 1LED SHOW Blink LED Period: 500 ms LEDON LEDOFF Rotate LED Period: 500 ms GREEN_ON YELLOW_ON RED_ON 3 BM K Thu t ði n T - ðH Bách Khoa TP.HCM enum BLState_t {OFF_STATE,ON_STATE} BLState; enum RTState_t {YELLOW_STATE, GREEN_STATE, RED_STATE} RTState; unsigned char timerFlag = 0; void TimerISR() { timerFlag = 1; } void BL_Update() { … } void RT_Update() { … } 4 BM K Thu t ði n T - ðH Bách Khoa TP.HCM 2 void main(void) { outputInit(); timerInit(); BLStateInit(); STStateInit(); while (1) { while (!timerFlag); BL_Update(); RT_Update(); timerFlag = 0; } } 5 BM K Thu t ði n T - ðH Bách Khoa TP.HCMShared variable (bi n dùng chung) Ho t ñ ng c a m t h th ng có th ñư c chia thành nhi u tác v ñ c l p m c dù chúng có liên quan t i nhau. VD: M t h th ng phát hi n chuy n ñ ng s d ng 1 sensor k t n i vào chân P1.0. M t chuy n ñ ng ñư c phát hi n khi sensor b ng 1 trong 2 l n lâý m u liên ti p cách nhau 200ms. LED1 (nôí vào P1.1) ñư c nh p nháy sau v i chu kỳ 200ms trong th i gian phát hi n chuy n ñ ng. LED2 (nôí vào P1.2) ñư c b t khi phát hi n chuy n ñ ng và t t 10s sau khi chuy n ñ ng không còn b phát hi n. 6 BM K Thu t ði n T - ðH Bách Khoa TP.HCM 3Shared variable (bi n dùng chung) !P1.0 !P1.0 P1.0 P1.0 P1.0 S0 S1 S2 mnt mnt = 0 mnt = 1 !P1.0 !mnt && (cnt < 50) !mnt mnt mnt !mnt T0 T1 T2 cnt = 0 cnt++ !mnt && !(cnt < 50) 7 BM K Thu t ði n T - ðH Bách Khoa TP.HCMShared variable (bi n dùng chung) Chú ý: Ch có 1 tác v ghi vào bi n chung. Nhi u tác v có th cùng ñ c m t bi n chung. VD V máy tr ng thái cho h th ng làm vi c sau: B t lò ñ t b ng cách set P1.0 khi nhi t ñ ño ñư c (ñ c vào t P2) nh hơn 100. Trong khi b t lò, ch p nháy LED n i vào P1.1 v i chu kỳ 500ms ñ báo cho ngư i dùng bi t là lò ñang b t. 8 BM K Thu t ði n T - ðH Bách Khoa TP.HCM 4Máy tr ng thái có chu kỳ khác nhau Các tác v v i chu kỳ khác nhau có th ñư c ch y b ng cách s d ng m t bi n ñ ñ m s l n c timerFlag ñư c b t (Timer tick) và th c thi khi bi n ñó ñ t ñ n giá tr mong mu n. VD: Vi t chương trình ñ 8051 ch p LED g n vào P1.0 v i chu kỳ 600 ms, và cho 3 LED xanh, vàng, ñ l n lư t sáng sau kho ng th i gian 1s. 9 BM K Thu t ði n T - ðH Bách Khoa TP.HCM enum blState_t {LEDON, LEDOFF} BLState; enum blState_t {GREEN, YELLOW,RED} RTState; static unsigned char timerFlag = 0; void timerISR(void) { timerFlag = 1; } void BLUpdate { … } void RTUpdate { … } 10 BM K Thu t ði n T - ðH Bách Khoa TP.HCM ...

Tài liệu được xem nhiều: