tailieunhanh - Bài giảng Lập trình hệ thống nhúng: Chương 4 - Bùi Quốc Bảo

Bài giảng "Lập trình hệ thống nhúng: chương 4 - Bùi Quốc Bảo" gồm các nội dung sau: chậm trễ sử dụng vòng lặp lệnh, cấu trúc Timeout, chậm trễ trong sử dụng bộ đếm thời gian, Cấu trúc superloop với delay. Và một số nội dung khác | L P TRÌNH H TH NG NHÚNG BÙI QU C B O Delay s d ng vòng l p l nh For(i=1000;i>0;i--); ðơn gi n Không ñòi h i timer Không bi t chính xác ñư c kho ng delay là bao nhiêu ðư c s d ng khi c n t o ra các th i gian delay không ñòi h i s chính xác l n. BM K Thu t ði n T - ðH Bách Khoa 2 1 C u trúc Timeout N Key pressed? N u phím b h ng hay ti p xúc không t t, chương trình s b treo trong quá trình ch y (run-time) Y Process 3 BM K Thu t ði n T - ðH Bách Khoa C u trúc Timeout ellapseTime = initValue N N Key pressed? ellapseTime-- ellapseTime=0? Y Process sbit Key = P1^0; ellapseTime = 1000; While (Key != 0) && (--ellapseTime != 0); BM K Thu t ði n T - ðH Bách Khoa 4 2 8051 Timer BM K Thu t ði n T - ðH Bách Khoa 5 8051 Timer BM K Thu t ði n T - ðH Bách Khoa 6 3 Delay using timer void delay50ms(void) { TMOD &= 0xF0; TMOD |= 0x01; ET = 0; TH0 = 0x3C; TL0 = 0xB0; TR0 = 1; While (!TF0); TR0 = 0; TF0 = 0; } BM K Thu t ði n T - ðH Bách Khoa 7 #ifndef _DELAY_H #define . #define #define #define #define OSC_FREQ OSC_PER_INST TIME_1ms PRELOAD_1ms 12 12 1000 65536 – (TIME_1ms)/(OSC_FREQ/OSC_PER_INST) #define PRELOAD_1ms_H #define PRELOAD_1ms_L (PRELOAD_1ms / 256) (PRELOAD_1ms % 256) #define TIME_50ms #define PRELOAD_50ms . void delay1ms(void); void delay50ms(void); void delayMs(unsigned int n); #endif BM K Thu t ði n T - ðH Bách Khoa 8 4 #include #include “” void { } void { } void { } delay1ms(void) delay50ms(void) delayMs(unsigned int n) BM K Thu t ði n T - ðH Bách Khoa 9 Access lowbyte and highbyte #define LOWBYTE(v) #define HIGHBYTE(v) ((unsigned char) (v)) ((unsigned char) (((unsigned int) (v)) >> 8)) #define BYTELOW(v) #define BYTEHIGH(v) (*(((unsigned char *) (&v) + 1))) (*((unsigned char *) (&v))) Void main(void) { volatile unsigned char i; i = LOWBYTE(0x1234); i = BYTEHIGH(0x1234); Sai ch nào } BM K

TỪ KHÓA LIÊN QUAN
crossorigin="anonymous">
Đã phát hiện trình chặn quảng cáo AdBlock
Trang web này phụ thuộc vào doanh thu từ số lần hiển thị quảng cáo để tồn tại. Vui lòng tắt trình chặn quảng cáo của bạn hoặc tạm dừng tính năng chặn quảng cáo cho trang web này.