Professional Documents
Culture Documents
Lập Trình Hệ Thống Nhúng: Bùi Quốc Bảo
Lập Trình Hệ Thống Nhúng: Bùi Quốc Bảo
Lập Trình Hệ Thống Nhúng: Bùi Quốc Bảo
NHÚNG
Sensor:
Output is 1 if water level is over
Output is 0 if water level is under
Sensor 1 = 0
Sensor 2 = 1
void initState()
State = S_STOPPUMP;
{ switch (State)
switch (State) {
{ case S_STOPPUMP:
case S_STOPPUMP: pumpCtrl(PUMPOFF);
if (sensor1() == WATERUNDER)
break;
State = S_PUMP;
case S_PUMP:
break;
pumpCtrl(PUMPON);
case S_PUMP:
break;
if (sensor2() == WATEROVER)
}}
State = S_STOPPUMP;
break; }
int main(void)
{ sensorsInit();
pumpCtrlInit();
pumpCtrl(PUMPOFF);
initState();
while (1)
{
stateMachineUpdate();
}}
if (genTimerCount != 0)
{ genTimerCount--;
}}
{ {
genTimerCount = 20; } }
break; break;
StatemMachine1Update();
StateMachine2Update();
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.
P1.0 P1.0
S0 S1 S2
mnt
mnt = 0 mnt = 1
!P1.0
mnt !mnt
T0 T1 T2
cnt = 0
cnt++
If the input device were faster than the software, a situation called CPU
bound, then the software waiting time would be zero
Now each C source read of a variable (e.g. status register) will result
in an assembly language LDR instruction