จากรูปด้านบน เป็นโฟวชาร์ทตัวอย่างแสดงถึงการทำงานของ sleep mode
อธิบายการทำงานได้ดังนี้
- รับค่าจากยูสเซอร์ มีการกดสวิทช์หรือไม่ ถ้ามีการกดสวิทช์ ให้ไปทำงานที่โปรแกรมรับค่าการกดสวิทช์
- ถ้าไม่มีการกดสวิทช์ ให้ไปตั้งค่ารอรับการอินเตอร์รัพ เช่น Timer Over Flow, Interrupt on pin change เพื่อเป็นการปลุก CPU ให้ตื่นเมื่อมีการอินเตอร์รัพตามที่ตั้งเอาไว้
- Sleep (โอม เจ้าจงหลับเถิด จะได้ประหยัดไฟ)
- ถ้ามีการอินเตอรัพ ตามที่ได้ตั้งค่าเอาไว้ CPU จะตื่น แล้วจะกระโดดไปทำงานในโปรแกรมอินเตอร์รัพ ถ้าไม่มีโปรแกรมอินเตอร์รัพ มันก็จะทำงานบันทัดต่อไป (แถวต่อไป)
ในการเซตค่ารอรับการอินเตอร์รัพ ให้ไล่ดูตาม รูปด้านล่างนี้ ว่าเราต้องการให้ตัวไหนทำงานบ้าง
แล้วให้ไปดูว่า ค่าบิตต่างๆในรูป อยู่ใน Register ไหนบ้าง ก็ให้ไปเซตใน Register นั้นๆ