16F84 1 ﺍﻟﻤﻴﻜﺭﻭﻤﺭﺍﻗﺏ ﻋﺒﺎﺭﺓ ﻋﻥ ﻗﻁﻌﺔ ﺍﻟﻴﻜﺘﺭﻭﻨﻴﺔ ﺭﻗﻤﻴﺔ ﺼﻐﻴﺭﺓ ﺘﻡ ﺍﺨﺘﺭﻋﻬﺎ ﺒﻌﺩ ﺃﺠﻬﺯﺓ ﺍﻟﻜﻤﺒﻴﻭﺘﺭ .ﻭﻴﻘـﻭﻡ ﺍﻟﻤﻴﻜﺭﻭﻤﺭﺍﻗـﺏ ﺒﺤﻔـﻅ ﻤﺠﻤﻭﻋﺔ ﻤﻥ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﺒﺩﺍﺨﻠﻪ ﻭﺍﻟﺘﻲ ﺘﺴﻤﻰ ﺒﺭﻨﺎﻤﺞ ﻭ ﻴﻜﻭﻥ ﻤﻥ ﺍﻟﺴﻬل ﺍﻟﺘﻌﺩﻴل ﻓﻴﻬﺎ ﺒﺩﻻ ﻤﻥ ﺇﻋﺎﺩﺓ ﺘﻐﻴﻴﺭ ﺍﻷﺴﻼﻙ ﻭﺍﻟﺘﻭﺼﻴﻼﺕ ﻜﻤـﺎ ﻜﺎﻥ ﻤﺘﺒﻊ ﻗﺩﻴﻤﺎ ﺍﻟﻤﻴﻜﺭﻭﻤﺭﺍﻗﺏ ﻫﻭ ﻋﺒﺎﺭﺓ ﻋﻥ ﻤﻴﻜﺭﻭﻤﻌﺎﻟﺞ ﺘﻡ ﺘﻁﻭﻴﺭﻩ ﺒﺤﻴﺙ ﺘﻡ ﻭﻀﻊ ﺠﻤﻴﻊ ﺍﻟﻤﻜﻭﻨﺎﺕ ﺍﻟﺘﺎﻟﻴﺔ ﻓﻲ ﺸﺭﻴﺤﺔ ﻭﺍﺤﺩﺓ ﻤﺩﻤﺠﺔ: -1ﻭﺤﺩﺓ ﺍﻟﻤﻌﺎﻟﺠﺔ ﺍﻟﻤﺭﻜﺯﻴﺔ )(CPU -2ﺫﺍﻜﺭﺓ ﻤﺅﻗﺘﺔ )ﻋﺸﻭﺍﺌﻴﺔ( )(RAM - 3ﺫﺍﻜﺭﺓ ﻗﺎﺒﻠﺔ ﻟﻠﻘﺭﺍﺀﺓ ﻭ ﺍﻟﻜﺘﺎﺒﺔ ﻜﻬﺭﺒﺎﺌﻴﺔ )(EEPROM -4ﻤﺩﺍﺨل ﺍﻟﺭﺒﻁ ﺍﻟﻤﻨﻁﻘﻴﺔ ﺒﻴﻥ ﺍﻟﻤﻌﺎﻟﺞ ﻭ ﺍﻟﻭﺴﻁ ﺍﻟﺨﺎﺭﺠﻲ . ﻭﻴﺠﺏ ﺃﻥ ﻨﺫﻜﺭ ﺃﻥ ﻫﻨﺎﻙ ﺒﻌﺽ ﺍﻟﺤﺎﻻﺕ ﺍﻟﺘﻲ ﻴﺘﻡ ﺍﺴﺘﺨﺩﺍﻡ ﺫﺍﻜﺭﺓ ﺇﻀﺎﻓﻴﺔ ﻟﻠﻤﻌﺎﻟﺞ ﻋﻨﺩﻤﺎ ﺘﻜﻭﻥ ﻜﻤﻴﺔ ﺍﻟﻤﻌﻠﻭﻤﺎﺕ ﺍﻟﻤﺭﺍﺩ ﺘﺨﺯﻴﻨﻬﺎ ﺃﻜﺒﺭ ﻤﻥ ﺴﻌﺔ ﺍﻟﺫﺍﻜﺭﺓ ﺍﻟﺩﺍﺨﻠﻴﺔ ﻟﻠﻤﻌﺎﻟﺞ! ﺍﻟﺨﻼﺼﺔ :ﺍﻟﻤﻴﻜﺭﻭﻤﺭﺍﻗﺏ ﻫﻭ ﺠﻴل ﺠﺩﻴﺩ ﻭ ﻤﻁﻭﺭ ﻤﻥ ﺍﻟﻤﻴﻜﺭﻭﻤﻌﺎﻟﺞ ﻭ ﺃﻥ ﺠﻤﻴﻊ ﻤﻠﺤﻘﺎﺕ ﺍﻟﻤﻌﺎﻟﺞ ﺘﻡ ﻭﻀﻌﻬﺎ ﻓﻲ ﺸﺭﻴﺤﺔ ﻭﺍﺤﺩﺓ ﻭ ﻤﻥ ﻫﻨﺎ ﻓﺒﻨﺎﺀ ﺩﺍﺭﺓ ﺘﺤﺘﻭﻱ ﻋﻠﻰ ﻤﻴﻜﺭﻭﻤﺭﺍﻗﺏ ﺘﻜﻭﻥ ﺒﺴﻴﻁﺔ ﻭ ﺼﻐﻴﺭﺓ ﻭ ﻟﻴﺴﺕ ﻤﻌﻘﺩﺓ. 2 ﻫﻭ ﺩﺍﺌﺭﺓ ﻤﺘﻜﺎﻤﻠﺔ ﺫﺍﺕ 18ﻁﺭﻑ ﻟﻜل ﻁﺭﻑ ﻭﻅﻴﻔﺔ ﺨﺎﺼﺔ ﺒﻪ . ﺍﻟﻤﻴﻜﺭﻭﻤﺭﺍﻗﺏ ﻴﻭﺼل ﻋﻠﻰ ﺘﻭﺘﺭ . 5Vﺍﻟﺘﻭﺘﺭ ﺍﻟﻤﻭﺠﺏ ﻋﻠﻰ ﺍﻟﻁﺭﻑ 14ﻭﺍﻟﺴﺎﻟﺏ ﻋﻠﻰ ﺍﻟﻁﺭﻑ . 5 ﻤﻨﻔﺫ ﺃ :ﻤﻜﻭﻥ ﻤﻥ ﺨﻤﺴﺔ ﺃﻁﺭﺍﻑ ﻭﻫﻲ ) . ( 3 , 2 ,1, 18 , 17 ﻤﻨﻔﺫ ﺏ ﻤﻜﻭﻥ ﻤﻥ ﺜﻤﺎﻨﻴﺔ ﺃﻁﺭﺍﻑ ﻭﻫﻲ ) . ( 13 ، 12 ، 11 ، 10 ، 9 ، 8 ، 7 ، 6 ﻤﻼﺤﻅﺔ :ﻜل ﻁﺭﻑ ﻤﻥ ﺃﻁﺭﺍﻑ ﺍﻟﻤﻨﻔﺫ "ﺃ" ﺃﻭ "ﺏ" ﻴﻤﻜﻥ ﺒﺭﻤﺠﺘﻪ ﻜﻤﻨﻔﺫ ﻟﺩﺨﻭل ﺃﻭ ﺨﺭﻭﺝ ﺍﻟﻤﻌﻠﻭﻤﺎﺕ ﺍﻟﻁﺭﻓﺎﻥ 15ﻭ 16ﻟﻭﺼل ﺍﻟﺴﺎﻋﺔ . . ﺍﻟﺴﺭﻋﺔ ﺍﻟﻤﻴﻜﺭﻭﻤﺭﺍﻗﺏ ﺘﺤﺩﺩﻫﺎ ﺩﺍﺭﺓ ﺍﻫﺘﺯﺍﺯﻴﺔ ﺨﺎﺭﺠﻴﺔ ﺘﻭﺼل ﻋﻠﻰ ﺍﻷﻁﺭﺍﻑ 15ﻭ . 16ﻤﻤﻜﻥ ﺃﻥ ﺘﻜﻭﻥ ﻤﻘﺎﻭﻤﻪ ﻭﻤﻜﺜﻔﺔ ﺃﻭ ﺒﺒﺴﺎﻁﺔ ﺤﺠﺭ ﻜﺭﻴﺴﺘﺎل ) , (Quartzﺍﻻﺤﺘﻤﺎل ﺍﻟﺜﺎﻨﻲ ﺫﻭ ﺩﻗﻪ ﻋﺎﻟﻴﺔ .ﻓﺤﺠﺭ ﺍﻟﻜﺭﻴﺴﺘﺎل ﻴﺤﺩﺙ ﺘﺫﺒﺫﺏ ﻋﻨﺩ ﻤﺭﻭﺭ ﺍﻟﺘﻴﺎﺭ ﺒﻪ .ﻭﻗﻴﻤـﺔ ﺘﺫﺒﺫﺒـﻪ ﻤﻜﺘﻭﺒﺔ ﻋﻠﻰ ﻏﻼﻓﻪ ﺍﻟﻤﻌﺩﻨﻲ ﻓﻤﻨﻪ 4ﻭ 10ﻭ.20Mhz ﺍﻟﻤﻴﻜﺭﻭﻤﺭﺍﻗﺏ 16F84ﻴﺘﺤﻤل ﺃﻥ ﻴﻭﺼل ﻋﻠﻰ ﻫﺯﺍﺯ ﺃﻋﻠﻰ ﻗﻴﻤﻪ ﻟﺘﺫﺒﺫﺒﻪ , 20Mhzﻫﺫﺍ ﺍﻟﺘﺫﺒﺫﺏ ﻴﺤﺩﺩ ﺍﻟﺴﺎﻋﺔ ,ﻭﻫﻭ ﺍﻟﺫﻱ ﻴﺤـﺩﺩ ﺴﺭﻋﺔ ﺘﻨﻔﻴﺫ ﺍﻟﻤﻌﺎﻟﺞ ﻷﻭﺍﻤﺭ ﺒﺭﺍﻤﺠﻨﺎ .ﺤﻴﺙ ﺴﺭﻋﺔ ﺘﻨﻔﻴﺫ ﺍﻷﻤﺭ ﺘﺴﺎﻭﻱ ﺭﺒﻊ ﺴﺭﻋﺔ ﺍﻟﻬﺯﺍﺯ . ﻤﺜﻼ ﻟﻠﺘﻭﻀﻴﺢ .ﺍﻷﻤﺭ ﻤﻤﻜﻥ ﺃﻥ ﻴﻜﻭﻥ ﺍﻤﺤﻲ ,ﺍﻗﺭﺃ ,ﺍﺠﻤﻊ ,ﺍﻁﺭﺡ ،ﺍﻟﺦ .....ﻟﻨﻘل ﺃﻨﻨﺎ ﻭﺼﻠﻨﺎ ﺍﻟﻤﺘﺤﻜﻡ ﻋﻠـﻰ ﻜﺭﻴـﺴﺘﺎل 4Mhz ﻓﺈﻥ ﺴﺭﻋﺔ ﺘﻨﻔﻴﺫ ﺍﻷﻭﺍﻤﺭ ﺭﺒﻊ ﻫﺫﻩ ﺍﻟﻘﻴﻤﺔ ﺃﻱ 1Mhzﺃﻱ ﻤﻠﻴﻭﻥ ﺃﻤﺭ ﻓﻲ ﺍﻟﺜﺎﻨﻴﺔ ,ﻭﻫﺫﺍ ﻤﻌﻨﺎﻩ ﺃﻨﻪ ﻴﻨﻔﺫ ﺍﻷﻤﺭ ﺍﻟﻭﺍﺤﺩ ﺒﻤﻴﻜﺭﻭ ﺜﺎﻨﻴﺔ. ﺍﻟﻜﺭﻴﺴﺘﺎل ﻟﻴﺱ ﻟﻪ ﻗﻁﺒﻴﺔ ,ﻴﻤﻜﻥ ﻭﺼﻠﻪ ﻜﻴﻔﻤﺎ ﻨﺸﺎﺀ ,ﻭ ﻤﻥ ﺍﻟﻤﺴﺘﺤﺴﻥ ﺒﻌﺩ ﻭﺼﻠﻪ ﺃﻥ ﻨ ﺼل ﻜل ﻁﺭﻑ ﻤﻨﻪ ﺒﻭﺍﺴﻁﺔ ﻤﻜﺜﻔـﺔ 22pF ﻋﻠﻰ ﺍﻟﻜﺘﻠﺔ ﻟﺘﻔﺎﺩﻱ ﺍﻟﻀﺠﻴﺞ . 1 ﺒﻘﻲ ﻟﻨﺎ ,ﺍﻟﻁﺭﻑ ﺭﻗﻡ , 4ﻫﻭ ﻁﺭﻑ ﺍﻟﻭﻀﻊ ﻓﻲ ﺍﻟﺼﻔﺭ ,ﻓﻌﻨﺩ ﺍﻟﻀﻐﻁ ﻋﻠﻴﻪ ﻴﻨﻬﻲ ﺍﻟﺒﺭﻨﺎﻤﺞ ﻋﻤﻠﻪ ﺜﻡ ﻴﻌﻭﺩ ﻟﺘﻁﺒﻴﻘﻪ ﻤﻥ ﺍﻷﻭل ﻤﺠﺩﺩﺍ . ﺍﻟﺸﻜل ﺍﻟﺨﺎﺭﺠﻲ ﺍﻟﻤﻴﻜﺭﻭﻤﺭﺍﻗﺏ 16F84 3 ﻟﻥ ﺃﻀﻊ ﺼﻭﺭﺓ ﻟﺘﺼﻤﻴﻡ ﺍﻟﻬﻴﻜل ﺍﻟﺩﺍﺨﻠﻲ ﻟﻠﻤﻴﻜﺭﻭﻤﺭﺍﻗﺏ ﻭﻨﺒﺩﺃ ﻓﻲ ﺸﺭﺤﻬﺎ ﻓﺫﻟﻙ ﻟﻥ ﻴﻭﺼﻠﻨﺎ ﻟﻠﻬﺩﻑ ﺍﻟﻤﻁﻠﻭﺏ .ﺒل ﺴﻨﻔﻌل ﻋﻜﺱ ﺫﻟـﻙ ﺴﻨﺸﺭﺡ ﻜل ﺠﺯﺀ ﺒﺒﺴﺎﻁﻪ ﻭ ﻨﻀﻴﻔﻪ ﻋﻠﻰ ﺍﻟﺘﺼﻤﻴﻡ ﻟﺘﻜﺘﻤل ﺍﻟﻔﻜﺭﺓ ﻭ ﺍﻟﺼﻭﺭﺓ ﻤﻌﺎ ....ﺍﻷﻤﺭ ﻟﻴﺱ ﻤﻌﻘﺩﺍ ...ﻓﻠﻨﺭﻜﺯ ﺴـﻭﻴﺎ ....ﻟﻨﺒـﺩﺃ ﺒﺘﻌﺭﻴﻑ ﺍﻟﺴﺠلْ.... ﺍﻟﺴﺠلْ ﻋﺒﺎﺭﺓ ﻋﻥ ﻋﺩﺓ ﺨﺎﻨﺎﺕ ﺃﻓﻘﻴﺔ ,ﻤﻭﺠﻭﺩﺓ ﻓﻲ ﺍﻟﺫﺍﻜﺭﺓ ,ﻜل ﺨﺎﻨﺔ ﻫﻲ ﻋﺒﺎﺭﺓ ﻋﻥ ﺒﻴﺕ ) ﺍﻟﺒﻴﺕ ﻤﻌﻨﺎﻩ ﺤﺭﻑ ﺜﻨﺎﺌﻲ ﺇﻤﺎ ﻭﺍﺤﺩ ﺃﻭ ﺼﻔﺭ( ﻓﻲ ﺍﻟﻤﻴﻜﺭﻭﻤﺭﺍﻗﺏ 16F84ﻁﻭل ﺍﻟﺴﺠل H8ﺒﻴﺎﺕ ﻤﻥ ﺒﻴﺕ ﺼﻔﺭ ﻟـ ﺒﻴﺕ . 7 ﺒﻴﺕ 0 ﺒﻴﺕ1 ﺒﻴﺕ2 ﺒﻴﺕ4 ﺒﻴﺕ3 ﺒﻴﺕ5 ﺒﻴﺕ6 ﺒﻴﺕ7 ﺇﺫﻥ ﺍﻟﺴﺠل ﻴﺤﺘﻭﻱ ﻋﻠﻰ ﻜﻠﻤﺔ ﺜﻨﺎﺌﻴﺔ ﻤﻥ ﺜﻤﺎﻨﻴﺔ ﺃﺒﻴﺎﺕ ) .(Octetﻫﺫﻩ ﻫﻲ ﺍﻟﻜﻠﻤﺔ ﺍﻟﺘﻲ ﻴﻘﺭﺃﻫﺎ ﺍﻟﻤﻌﺎﻟﺞ ﻟﻴﻁﺭﺤﻬﺎ ﺃﻭ ﻴﺠﻤﻌﻬﺎ ﻤﺜﻼ ﻤـﻥ ﺴﺠل ﺁﺨﺭ. ﺴﺅﺍل ....ﻜﻴﻑ ﻴﻔﻬﻡ ﺍﻟﻤﻌﺎﻟﺞ ﺒﺄﻨﻨﻲ ﺃﺭﻴﺩ ﻁﺭﺡ ﻫﺫﺍ ﺍﻟﺴﺠل ﻤﻥ ﺫﺍﻙ ؟ ﺒﺒﺴﺎﻁﻪ ﻟﻜل ﺴﺠل ﺍﺴﻡ ﻭﻋﻨﻭﺍﻥ ﻟﻨﺭﻯ ......ﻜﻴﻑ ؟ .....ﺍﻟﺫﺍﻜﺭﺓ ﻤﺅﻟﻔﻪ ﻤﻥ ﺴﺠﻼﺕ ﺒﺸﻜل ﻋﻤﻭﺩﻱ ﻜﻤﺎ ﻴﻭﻀﺢ ﺍﻟﺸﻜل ﺍﻟﺘﺎﻟﻲ : ﺍﻟﻤﻭﻀﻊ ﻴﺸﻜل ﻋﻨﻭﺍﻥ ﺍﻟﺴﺠل ,ﻭﺍﻟﻤﻌﺎﻟﺞ ﻴﻔﻬﻡ ﺫﻟﻙ ﺘﻠﻘﺎﺌﻴﺎ ,ﻭﻟﻴﺱ ﻟﺩﻴﻪ ﻤﺸﻜﻠﻪ ﻓﻲ ﺫﻟﻙ ,ﺍﻟﻤﺸﻜﻠﺔ ﻟﺩﻴﻨﺎ ﻨﺤﻥ ﺇﺫﺍ ﻜﺎﻥ ﻫﻨﺎﻙ ﺫﺍﻜﺭﺓ ﻤﻥ ﺴﺘﻴﻥ ﻋﻨﻭﺍﻨﺎ ,ﻭ ﺃﺭﺩﻨﺎ ﺃﻥ ﻨﻜﺘﺏ ﺒﺭﻨﺎﻤﺠﺎ ﻤﺜﻼ ,ﻟﻘﻴﺎﺱ ﻤﺴﺎﺤﺔ ﺍﻟﻤﺭﺒﻊ ....ﺍﻟﻁﻭل × ﺍﻟﻌﺭﺽ ....ﻓﺒﺄﻱ ﻤﻥ ﻫﺫﻩ ﺍﻟﻌﻨـﺎﻭﻴﻥ ﻭﻀـﻌﻨﺎ ﺍﻟﻁﻭل ﻭﺍﻟﻌﺭﺽ ......ﻟﺫﺍ ﻫﻨﺎﻙ ﻟﻜل ﺴﺠل ﺇﺴﻡ ....ﺇﻤﺎ ﺃﻥ ﻨﻀﻌﻪ ﻨﺤﻥ ﺒﺄﻨﻔﺴﻨﺎ ....ﻭﻫﻨﺎﻙ ﺃﺴﻤﺎﺀ ﻟﺴﺠﻼﺕ ﻤﺤﺩﺩﻩ ﻤﻥ ﺍﻟﻤﺼﻨﻊ.... 2 ﺍﻟﺫﺍﻜﺭﺓ ﺍﻟﻤﺅﻗﺘﺔ) (RAM ﺫﺍﻜﺭﺓ ) ( RAMﺘﻌﻤل ﻭﺘﺤﺘﻔﻅ ﺒﺎﻟﻤﻌﻠﻭﻤﺎﺕ ﻁﺎﻟﻤﺎ ﻫﻨﺎﻙ ﺘﻭﺘﺭ ﻜﻬﺭﺒﺎﺌﻲ ﻴﺼل ﻟﻠﻤﻴﻜﺭﻭﻤﺭﺍﻗﺏ ﻭ ﻓﻲ ﺤﺎل ﻓﻘﺩﺍﻨﻪ ﺘﺘﺤﻭل ﻜل ﺍﻟﺴﺠﻼﺕ ﺇﻟﻰ ﺼﻔﺭ ﻭﺘﻔﻘﺩ ﺍﻟﻤﻌﻠﻭﻤﺎﺕ ) .......ﺫﺍﻜﺭﻩ ﻤﺅﻗﺘﺔ ( ﺘﺘﻜﻭﻥ ﻤﻥ ﺼﻔﺤﺘﻴﻥ ﻭﺒﻜل ﺼﻔﺤﺔ ﻫﻨﺎﻙ 128ﺴﺠل ﻤﻥ ﻤﻭﻀﻊ ﺼﻔﺭ ﺇﻟﻰ .127 ﻟﻨﺄﺨﺫ ﺍﻟﺼﻔﺤﺔ ﺍﻷﻭﻟﻰ ﺃﻭﻟﻰ 12ﻤﻭﻀﻊ ) ﻤﻥ 0ﺇﻟﻰ ( 11ﻋﺒﺎﺭﺓ ﻋﻥ ﺴﺠﻼﺕ ﺴﻤﺎﻫﺎ ﺍﻟﻤﺼﻨﻊ ﻭﺘﺴﺘﺨﺩﻡ ﻤﻌﻠﻭﻤﺎﺘﻬـﺎ ﻓـﻲ ﺘـﺴﻬﻴل ﺍﻟﺒﺭﻤﺠﺔ ,ﺴﻨﺩﺭﺱ ﺫﻟﻙ ﻻﺤﻘﺎ ﻭﺘﺴﻤﻰ ﺴﺠﻼﺕ ﺍﻟﻌﻤل ﺍﻟﺨﺎﺹ .ﻭﻴﻤﻜﻥ ﻗﺭﺍﺀﺘﻬﺎ ﻭﺘﻐﻴﻴﺭ ﻤﺤﺘﻭﺍﻫﺎ . ﻤﻥ 12ﺇﻟﻰ 79ﻫﻨﺎﻙ 68ﺴﺠل ﻫﺩﻑ ﻋﺎﻡ ﻤﻌﻨﺎﻩ ﺃﻥ ﻫﺫﻩ ﺍﻟﺴﺠﻼﺕ ﺨﺎﺼﺔ ﺒﻙ ﻜﻤﺒﺭﻤﺞ ﻭ ﻟﻙ ﺍﻟﺤﺭﻴﺔ ﺒﺄﻥ ﺘﺴﻤﻴﻬﺎ ﻜﻤﺎ ﺘﺸﺎﺀ ,ﻤﺜﻼ ﻁﻭل ﺃﻭ ﻋﺭﺽ ﻜﻤﺎ ﺫﻜﺭﺕ ﺴﺎﺒﻘﺎ .....ﺇﺫﻥ ﻋﻨﺩﻨﺎ 68ﺴﺠل ﺘﺤﺕ ﺘﺼﺭﻓﻨﺎ ﺍﻟﻤﻁﻠﻕ . ﻤﻥ 80ﺇﻟﻰ , 127ﻓﺎﺭﻍ ,ﻤﻭﺠﻭﺩ ﻤﻜﺎﻥ ﻭﻋﻨﻭﺍﻥ ﺍﻟﺴﺠﻼﺕ ﺃﻤﺎ ﺍﻟﺴﺠﻼﺕ ﺒﺤﺩ ﺫﺍﺘﻬﺎ ﻓﻬﻲ ﻏﻴﺭ ﻤﻭﺠﻭﺩﺓ . ﺍﻟﺼﻔﺤﺔ ﺍﻟﺜﺎﻨﻴﺔ ﻜﺴﺎﺒﻘﺘﻬﺎ ﺘﺤﺘﻭﻱ ﻋﻠﻰ 128ﺴﺠل ﻤﻥ ﺍﻟﻤﻭﻀﻊ 128ﺇﻟﻰ ، 255ﺃﻭل 12ﺴﺠل ﺴﺠﻼﺕ ﻋﻤل ﺨﺎﺹ ﻤﻥ 128ﺇﻟـﻰ ........ 139ﺒﻌﺩﻫﺎ ﻤﻥ ﺍﻟﻤﻭﻀﻊ 140ﺇﻟﻰ 207ﻫﻨﺎﻙ 68ﺴﺠل ,ﻋﺒﺎﺭﺓ ﻋﻥ ﺼﻭﺭﻩ ﻁﺒﻕ ﺍﻷﺼـل ﻟـﺴﺠﻼﺕ ﺍﻷﻫـﺩﺍﻑ ﺍﻟﻌﺎﻤـﺔ ﺍﻟﻤﻭﺠﻭﺩﺓ ﻓﻲ ﺍﻟﺼﻔﺤﺔ ﺍﻷﻭﻟﻰ. ﻨﺘﻭﻗﻑ ﻗﻠﻴﻼ ,ﻟﺘﻭﻀﻴﺢ ﻫﺫﻩ ﺍﻟﻨﻘﻁﺔ ....ﻟﻨﻘل ﺃﻨﻪ ﻟﺩﻴﻙ ﺴﺠل ﺍﺴﻤﻪ REGﻋﻨﻭﺍﻨﻪ 12ﻓﻲ ﺍﻟﺼﻔﺤﺔ ﺍﻷﻭﻟﻰ .....ﻓﺄﻨﺕ ﺘﻘﻭل ﻟﻠﻤﻌﺎﻟﺞ ﺃﺩﺨل ﺍﻟﺼﻔﺤﺔ ﺍﻷﻭﻟﻰ ....ﻭ ﺍﻗﺭﺃ ..... REGﺃﻤﺎ ﺇﺫﺍ ﻁﻠﺒﺕ ﻤﻥ ﺍﻟﻤﻌﺎﻟﺞ ﺩﺨﻭل ﺇﻟﻰ ﺍﻟﺼﻔﺤﺔ ﺍﻟﺜﺎﻨﻴﺔ ﻟﻴﻘﻭﻡ ﺒﻤﻬﻤﺔ ﻤﺎ ،ﺜﻡ ﺍﺤﺘﺠـﺕ ﻗﺭﺍﺀﺓ ﺍﻟﺴﺠل REGﻤﺭﺓ ﺃﺨﺭﻯ .....ﻓﻠﺴﺕ ﺒﺤﺎﺠﺔ ﻟﻠﺫﻫﺎﺏ ﺇﻟﻰ ﺍﻟﺼﻔﺤﺔ ﺍﻷﻭﻟﻰ ﺜﺎﻨﻴﺔ ،ﻓﺎﻟﻤﻴﻜﺭﻭﻤﺭﺍﻗﺏ ﻴﻀﻊ ﺼﻭﺭﻩ ﻁﺒـﻕ ﺍﻷﺼـل ﻟﻠﺴﺠل ﻭﻴﺴﻤﻬﺎ REGﻓﻲ ﺍﻟﻤﻭﻀﻊ 140ﻜل ﻤﺎ ﻋﻠﻴﻙ ﺃﻥ ﺘﻘﻭل ﺍﻗﺭﺃ REGﻤﺜﻼ .ﻋﺩﺍ ﺫﻟﻙ ﺃﻱ ﺘﻐﻴﻴﺭ ﻴﺠﺭﻱ ﻟﻬﺫﺍ ﺍﻟﺴﺠل ﺴﻭﺍﺀ ﻜﺎﻥ ﻓﻲ ﺍﻟﺼﻔﺤﺔ ﺍﻷﻭﻟﻰ ﺃﻭ ﺍﻟﺜﺎﻨﻴﺔ ,ﻴﻨﻌﻜﺱ ﻋﻠﻰ ﻤﻘﺎﺒﻠﻪ ,ﻓﻜل ﻭﺍﺤﺩ ﻤﻨﻬﻡ ﻤﺭﺁﺓ ﻟﻶﺨﺭ . ﻤﻥ ﺍﻟﻤﻭﻀﻊ 208ﺇﻟﻰ 255ﻓﺎﺭﻍ ..... ﺇﺫﻥ ﺍﻟﺼﻭﺭﺓ ﺍﻟﻜﺎﻤﻠﺔ ﻟﺫﺍﻜﺭﺓ RAMﻴﻭﻀﺤﻬﺎ ﺍﻟﺸﻜل ﺍﻟﺘﺎﻟﻲ : ﺍﻟﺼﻔﺤﺔ 1 ﺍﻟﺼﻔﺤﺔ 2 ﺫﺍﻜﺭﺓ ﺍﻟﺒﺭﻨﺎﻤﺞ ﻫﺫﻩ ﺍﻟﺫﺍﻜﺭﺓ ﻤﻥ ﻨﻭﻉ) ﻓﻼﺵ( ﺃﻱ ﺃﻨﻬﺎ ﺘﻤﺤﻰ ﻭﺘﻘﺭﺃ ﻜﻬﺭﺒﺎﺌﻴﺎ ،ﺘﺤﺘﻔﻅ ﺒﺎﻟﻤﻌﻠﻭﻤﺎﺕ ﻟﻤﺩﺓ 40ﻋﺎﻡ ﺤﺘﻰ ﻭﻟﻭ ﻗﻁﻊ ﺍﻟﺘﻴﺎﺭ ﺍﻟﻜﻬﺭﺒﺎﺌﻲ ﻋـﻥ ﺍﻟﻤﻴﻜﺭﻭﻤﺭﺍﻗﺏ .ﻭﻫﻲ ﺫﺍﻜﺭﺓ ﻨﺴﺘﻁﻴﻊ ﻗﺭﺍﺀﺘﻬﺎ ﺃﻭ ﻤﺤﻭﻫﺎ . 3 ﺇﺫﻥ ﻫﻲ ﺫﺍﻜﺭﺓ ﻤﺨﺼﺼﺔ ﻟﺤﻔﻅ ﺍﻷﻭﺍﻤﺭ ,ﺍﻟﺘﻲ ﺘﺸﻴﺭ ﻟﻠﻤﻌﺎﻟﺞ ,ﻤﺎ ﻫﻭ ﻤﻁﻠﻭﺏ ﻤﻨﻪ ﺃﻥ ﻴﻔﻌﻠﻪ ،ﻓﻌﻨﺩﻤﺎ ﻨﻀﻊ ﺍﻟﻤﻴﻜﺭﻭﻤﺭﺍﻗﺏ ﻓﻲ ﺩﺍﺭﺓ ﻤﺎ ﺒﻌﺩ ﺃﻥ ﻨﻜﻭﻥ ﻗﺩ ﺒﺭﻤﺠﻨﺎﻩ .ﻭ ﻓﻭﺭ ﻭﺼﻭل ﺍﻟﺘﻴﺎﺭ ﺍﻟﻜﻬﺭﺒﺎﺌﻲ ﻟﻪ ﺃﻭل ﻋﻤل ﻴﻘﻭﻡ ﺒﻪ ﺍﻟﻤﻴﻜﺭﻭﻤﻌﺎﻟﺞ ﺘﻠﻘﺎﺌﻴﺎ ﻫﻭ ﺍﻟﺫﻫﺎﺏ ﺇﻟﻰ ﺃﻭل ﻤﻭﻀﻊ ﻓﻲ ﻫﺫﻩ ﺍﻟﺫﺍﻜﺭﺓ ﻟﻴﻁﺒﻕ ﺃﻭل ﺃﻤﺭ ﻭﺘﻠﻘﺎﺌﻴﺎ ﻴﺒﺤﺙ ﻋﻥ ﺍﻟﻤﻭﻀﻊ ﺍﻟﺜﺎﻨﻲ ﻭﻫﻜﺫﺍ ﺒﺎﻟﺘﺴﻠﺴل ﺤﺘﻰ ﻨﻬﺎﻴﺔ ﺍﻟﺒﺭﻨﺎﻤﺞ ﺇﺫﻥ ﺍﻟﻤﻌﺎﻟﺞ ﻴﻁﺒـﻕ ﺘﻠﻘﺎﺌﻴـﺎ, ﺍﻷﻭﺍﻤﺭ ﺍﻟﻤﻭﺠﻭﺩﺓ ﻓﻲ ﺴﺠﻼﺕ ﺫﺍﻜﺭﺓ ﺍﻟﺒﺭﻨﺎﻤﺞ ,ﻤﻥ ﺃﻭل ﻤﻭﻀﻊ ﻭﺤﺘﻰ ﺍﻟﻨﻬﺎﻴﺔ ﻭﺒﺸﻜل ﺘﺴﻠﺴﻠﻲ . ﺫﺍﻜﺭﺓ ﺍﻟﺒﺭﻨﺎﻤﺞ ﻤﻜﻭﻨﻪ ﻤﻥ 1024ﺴﺠل )ﻤﻥ ﺼﻔﺭ ﺇﻟﻰ ( 1023ﻁﻭل ﻜل ﻤﻨﻬﺎ 14ﺒﻴﺕ .ﺍﻟﻤﻭﻀﻊ ﺼﻔﺭ ﻋﺒﺎﺭﺓ ﻋﻥ ﻤﺅﺸﺭ ﺍﻟﻭﻀﻊ ﻓﻲ ﺍﻟﺼﻔﺭ ) (RAZﻭﺍﻟﺭﺍﺒﻊ ﻤﺅﺸﺭ ﻤﻘﺎﻁﻌﺔ ) (Interruptionﻟﻨﺭﺴﻡ ﺍﻟﺸﻜل .....ﺜﻡ ﻨﻭﻀﺢ ﻫﺎﺘﻴﻥ ﺍﻟﻨﻘﻁﺘﻴﻥ. ﻣﺆﺷﺮ اﻟﻮﺿﻊ ﻓﻲ اﻟﺼﻔﺮ ﻣﺆﺷﺮ اﻟﻤﻘﺎﻃﻌﺔ ﻤﺅﺸﺭ ﺍﻟﻭﻀﻊ ﻓﻲ ﺍﻟﺼﻔﺭ) (RAZﻋﻨﺩﻤﺎ ﻨﻁﺒﻕ ﺇﺸﺎﺭﺓ ﻋﻠﻰ ﺍﻟﻤﺩﺨل 4ﻓﺈﻥ ﺍﻟﻤﻴﻜﺭﻭﻤﻌﺎﻟﺞ ﻴﻠﻐﻲ ﻜل ﻤﺎ ﻴﻘﻭﻡ ﺒـﻪ ﻓـﻲ ﺘﻠـﻙ ﺍﻟﻠﺤﻅـﺔ ﻭﻴﺫﻫﺏ ﺘﻠﻘﺎﺌﻴﺎ ﺇﻟﻰ ﻤﺅﺸﺭ ﺍﻟﻭﻀﻊ ﻓﻲ ﺍﻟﺼﻔﺭ ﺃﻱ ﺇﻟﻰ ﺍﻟﻤﻭﻀﻊ ﺼﻔﺭ ﻟﻴﻁﺒﻕ ﺍﻷﻭﺍﻤﺭ ﺒﺎﻟﺘﺴﻠﺴل ﻤﺠﺩﺩﺍ . ﻤﺅﺸﺭ ﺍﻟﻤﻘﺎﻁﻌﺔ :ﻓﻲ ﺤﺎل ﺤﺩﻭﺙ ﻤﻘﺎﻁﻌﺔ ﺍﻟﻤﻌﺎﻟﺞ ﺴﻴﺫﻫﺏ ﺘﻠﻘﺎﺌﻴﺎ ﺇﻟﻰ ﺍﻟﻌﻨﻭﺍﻥ 4ﻟﻴﻁﺒﻕ ﻤﻨﻪ ﻓﺼﺎﻋﺩﺍ ﺍﻷﻭﺍﻤﺭ ﺒﺸﻜل ﺘﺴﻠﺴﻠﻲ. ﺫﺍﻜﺭﺓ ﺍﻟﻤﻌﻠﻭﻤﺎﺕ ﺫﺍﻜﺭﺓ ﺍﻟﻤﻌﻠﻭﻤﺎﺕ ﻤﻥ ﻨﻭﻉ ) (EEPROMﻴﻌﻨﻲ ﺃﻨﻬﺎ ﺘﺴﺠل ﻭﺘﻤﺤﻰ ﻜﻬﺭﺒﺎﺌﻴﺎ . ﺫﺍﻜﺭﺓ ﺍﻟﻤﻌﻠﻭﻤﺎﺕ ﻤﻜﻭﻨﻪ ﻤﻥ 64ﺴﺠل ) ﻤﻥ ﺍﻟﻤﻭﻀﻊ ﺼﻔﺭ ﺤﺘﻰ ( 63ﺒﻁﻭل 8ﺒﻴﺕ . ﻤﻴﻜﺭﻭﻤﻌﺎﻟﺞ 8ﺒﻴﺕ : ﻴﺴﺘﻁﻴﻊ ﺃﻥ ﻴﻌﺎﻟﺞ ) ﻴﻁﺭﺡ ,ﻴﺠﻤﻊ ,ﻴﻘﺭﺃ .......ﺇﻟﺦ ( ﻜﻠﻤﺎﺕ ) ﺴﺠﻼﺕ ( ﺒﻁﻭل 8ﺃﺒﻴﺎﺕ ،ﻴﻌﻨﻲ ﺃﻜﺒﺭ ﺭﻗﻡ ﺜﻨﺎﺌﻲ ﻴﻤﻜﻥ ﺃﻥ ﻨﺨﺯﻨﻪ ﻓﻲ ﺴﺠل ﻤﻥ 8ﺒﻴﺕ ﻫﻭ ﺍﻟـ 11111111ﻭﻴﺴﺎﻭﻱ ﻋﺸﺭﻴﺎ ﺍﻟﺭﻗﻡ ، 255ﻨﻔﻬﻡ ﻤﻥ ﺫﻟﻙ ﺃﻨﻪ ﻴﻌﺎﻟﺞ ﺃﺭﻗﺎﻡ ﻤﻥ ﺼﻔﺭ ﻟـ 255ﻭ ﻻ ﻗﺩﺭﺓ ﻟﻪ ﻟﻤﻌﺎﻟﺠﺔ ﺃﺭﻗﺎﻡ ﺃﻋﻠﻰ ﻤﻥ ﺫﻟﻙ . ﺴﺠل ﻋﻤل ﺍﻟﻤﻴﻜﺭﻭﻤﻌﺎﻟﺞ : ﻋﺒﺎﺭﺓ ﻋﻥ ﺴﺠل ﻤﻥ 8ﺃﺒﻴﺎﺕ ,ﻭﻴﺭﻤﺯ ﺇﻟﻴﻪ ﺒﺤﺭﻑ " ."Wﻭﻴﺴﺘﻌﻤﻠﻪ ﺍﻟﻤﻌﺎﻟﺞ ﻟﻠﻘﻴﺎﻡ ﺒﻌﻤﻠﻴﺎﺘﻪ ﺍﻟﺤﺴﺎﺒﻴﺔ ,ﻭﺴﻨﺭﻯ ﺘﻔﺼﻴﻼ ﻟـﺫﻟﻙ ﻓـﻲ ﺸﺭﺤﻨﺎ ﻟﻠﺒﺭﻤﺠﺔ . 4 ﻋﺩﺍﺩ ﺍﻟﺒﺭﻨﺎﻤﺞ : ﺴﺠل ﻤﻜﻭﻥ ﻤﻥ 14ﺒﻴﺕ .ﻭﻀﻴﻔﺘﻪ ﻻ ﺘﺘﻌﺩﻯ ﺫﺍﻜﺭﺓ ﺍﻟﺒﺭﻨﺎﻤﺞ ,ﺘﺫﻜﺭ ﺒﺄﻨﻨﻲ ﻗﻠﺕ ﺃﻥ ﺍﻟﻤﻌﺎﻟﺞ ﻴﺒﺩﺃ ﺒﺘﻁﺒﻴـﻕ ﺍﻷﻭﺍﻤـﺭ ﺒﺎﻟﺘﺴﻠـﺴل ﻤـﻥ ﺍﻟﻤﻭﻀﻊ ﺼﻔﺭ ﻭﺤﺘﻰ ﺍﻟﻨﻬﺎﻴﺔ ،ﻓﺒﻴﻨﻤﺎ ﺍﻟﻤﻌﺎﻟﺞ ﻴﻔﻌل ﺫﻟﻙ ,ﻫﺫﺍ ﺍﻟﺴﺠل ﻴﺘﻐﻴﺭ ﺘﻠﻘﺎﺌﻴﺎ ﻟﻴﺤﺘﻭﻱ ﻤﻭﻀﻊ ﺍﻷﻤﺭ ﺍﻟﺫﻱ ﻴﻨﻔﺫ . ﻟﻤﺤﺔ ﺴﺭﻴﻌﺔ ﻋﻥ ﺍﻟﺒﺭﺍﻤﺞ ﺍﻟﻤﺼﻐﺭﺓ: ﻋﻨﺩﻤﺎ ﻨﻘﻭﻡ ﺒﻜﺘﺎﺒﺔ ﺒﺭﻨﺎﻤﺞ ﻟﻠﻤﻴﻜﺭﻭﻤﺭﺍﻗﺏ ﻴﻤﻜﻨﻨﺎ ﺘﺠﺯﺌﺘﻪ ﺇﻟﻰ ﺒﺭﻨﺎﻤﺞ ﺭﺌﻴﺴﻲ ﻭﺒﺭﺍﻤﺞ ﻤﺴﺎﻋﺩﺓ ﻤﺼﻐﺭﻩ ﺘﻘﻭﻡ ﺒﻭﻅﻴﻔﺔ ﻤﻌﻴﻨـﻪ ﻨﺭﻴـﺩ ﺍﺴﺘﺨﺩﺍﻤﻬﺎ ﺃﻜﺜﺭ ﻤﻥ ﻤﺭﺓ ﺩﺍﺨل ﺍﻟﺒﺭﻨﺎﻤﺞ ﺍﻟﺭﺌﻴﺴﻲ ﻓﻨﺴﺘﺩﻋﻴﻬﺎ . ﻤﺜﺎل :ﺍﻟﻤﻴﻜﺭﻭﻤﺭﺍﻗﺏ ﻴﻨﻔﺫ ﺃﻤﺭ ﻜل 1ﻤﻴﻜﺭﻭﺜﺎﻨﻴﺔ ،ﻟﻜﻨﻨﺎ ﺒﺤﺎﺠﺔ ﺇﻟﻰ ﺃﻥ ﻴﻨﺘﻅﺭ 5ﻤﻴﻜﺭﻭﺜﺎﻨﻴﺔ ﻗﺒل ﺃﻥ ﻴﻁﺒﻕ ﺃﻤﺭﺍ ﻤﺎ ...ﺍﻟﺤل ﻫﻭ ﻜﺘﺎﺒﺔ ﺒﺭﻨﺎﻤﺞ ﻤﺼﻐﺭ ﻨﺴﺘﺩﻋﻴﻪ ﻤﺘﻰ ﻨﺸﺎﺀ ﻟﻴﺴﺘﻬﻠﻙ 5ﻤﻴﻜﺭﻭ ﺜﺎﻨﻴﺔ ﻤﻥ ﺍﻟﻭﻗﺕ ....ﻤﺜﻼ ﻨﺴﻤﻲ ﺍﻟﺒﺭﻨﺎﻤﺞ ﺍﻟﻤﺼﻐﺭ Retardﻭﻨﻜﺘﺏ: Retard Nop Nop Nop return ﺃﻋﻼﻩ ﻜﺘﺒﻨﺎ ﻭﺒﻜل ﺒﺴﺎﻁﺔ ﺒﺭﻨﺎﻤﺞ ﻤﺼﻐﺭ ....ﺒﻠﻐﺔ Assembleurﻭﺍﺴﺘﻌﻤﻠﻨﺎ ﺃﻤﺭﺍﻥ ﻤﻨﻬﻡ ﻻ ﺘﻔﻌل ﺸﻲﺀ ) (Nopﻭ ﺍﺭﺠﻊ ).(return ﺍﻷﻭل ﻁﻠﺒﻨﺎ ﻤﻥ ﺍﻟﻤﺘﺤﻜﻡ ﺃﻥ ﻻ ﻴﻔﻌل ﺸﻴﺌﺎ ﻓﻬﻭ ﻟﻥ ﻴﺠﻤﻊ ﻟﻥ ﻴﻁﺭﺡ ﺇﻟﺦ .....ﻟﻜﻥ ﺘﻨﻔﻴﺫ ﻫﺫﺍ ﺍﻷﻤﺭ ﻴﺴﺘﻐﺭﻕ 1ﻤﻴﻜﺭﻭﺜﺎﻨﻴﺔ .ﻁﻠﺒﻨﺎ ﻤﻨﻪ ﺃﻥ ﻴﻨﻔﺫﻩ ﺜﻼﺙ ﻤﺭﺍﺕ ﺴﻴﺴﺘﻐﺭﻕ ﺫﻟﻙ 3ﺨﻼل ﻤﻴﻜﺭﻭﺜﺎﻨﻴﺔ ﻭ ﺍﻷﻤﺭ ﺍﺭﺠﻊ ﻴﺴﺘﻬﻠﻙ ﺩﻭﺭﺘﺎﻥ ﻤﻥ ﺍﻟـﺴﺎﻋﺔ ﺃﻱ 2ﻤﻴﻜﺭﻭﺜﺎﻨﻴـﺔ ......ﺇﺫﻥ ﻴﻁﺒﻕ ﺍﻟﺒﺭﻨﺎﻤﺞ ﻓﻲ 5ﻤﻴﻜﺭﻭﺜﺎﻨﻴﺔ ﻭﻫﺫﺍ ﻤﺎ ﻨﺭﻴﺩﻩ ...... ﺘﻌﻠﻤﻨﺎ ﻤﺎ ﻫﻭ ﺍﻟﺒﺭﻨﺎﻤﺞ ﺍﻟﻤﺼﻐﺭ ﻭ ﻴﻁﻠﺏ ﻤﻥ ﺍﻟﺒﺭﻨﺎﻤﺞ ﺍﻟﺭﺌﻴﺴﻲ ﺃﻥ ﻴﺴﺘﺩﻋﻴﻪ ﻜﻬﺫﺍ . Retard Call ﻴﺄﺘﻲ ﺍﻟﻤﻴﻜﺭﻭﻤﻌﺎﻟﺞ ﻟﺘﻨﻔﻴﺫ ﺍﻟﺒﺭﻨﺎﻤﺞ ﺍﻟﻤﺼﻐﺭ ,ﻭﻴﺒﺩﺃ ﺒﺘﻨﻔﻴﺫ ﺍﻷﻭﺍﻤﺭ ﺒﺎﻟﺘﺴﻠﺴل ,ﻭﻋﻨﺩﻤﺎ ﻴﺼل ﺇﻟـﻰ ﺍﻷﻤـﺭ ﺇﺭﺠـﻊ ﻜﻴـﻑ ﺴـﻴﻌﺭﻑ ﺍﻟﻤﻴﻜﺭﻭﻤﻌﺎﻟﺞ ﺇﻟﻰ ﺃﻱ ﻤﻭﻀﻊ ﺴﻴﺭﺠﻊ ؟ ﻭﺍﻟﻤﻁﻠﻭﺏ ﻫﻭ ﺍﻟﺭﺠﻭﻉ ﻟﺘﻁﺒﻴﻕ ﺍﻷﻤﺭ ﺍﻟﺫﻱ ﻴﻠﻲ ﺃﻤﺭ ﺍﻻﺴﺘﺩﻋﺎﺀ ﻟﺫﺍ ﻭﺠﺩﺕ ﺫﺍﻜﺭﺓ ﺍﻟﻌﻭﺩﺓ . ﺫﺍﻜﺭﺓ ﺍﻟﻌﻭﺩﺓ : ﻤﻜﻭﻨﺔ ﻓﻲ ﺍﻟﻤﻴﻜﺭﻭﻤﺭﺍﻗﺏ ﻤﻥ ﺜﻤﺎﻨﻴﺔ ﺴﺠﻼﺕ .ﻫﺫﻩ ﺍﻟﺴﺠﻼﺕ ﻻ ﺘﻜﺘﺏ ﻭﻻ ﺘﻘﺭﺃ ﻤﺒﺎﺸﺭﺓ ,ﺒل ﻴﺴﺘﻌﻤﻠﻬﺎ ﺍﻟﻤﻌﺎﻟﺞ ﺘﻠﻘﺎﺌﻴﺎ ....ﻴﻌﻨﻲ ﻜﻠﻤﺎ ﺼﺎﺩﻓﻪ ﺃﻤﺭ ﺍﺴﺘﺩﻋﺎﺀ ﺴﻴﺴﺠل ﻤﺎ ﺒﻤﺤﺘﻭﻯ ﻋﺩﺍﺩ ﺍﻟﺒﺭﻨﺎﻤﺞ )ﻤﻭﻀﻊ ﺍﻷﻤﺭ( ﻓﻲ ﺃﻭل ﺴﺠل ﻟﺫﺍﻜﺭﺓ ﺍﻟﻌﻭﺩﺓ ﻭﻋﻨﺩﻤﺎ ﻴﻁﻠﺏ ﻤﻨـﻪ ﺍﻟﺭﺠـﻭﻉ ﺴﻴﻌﻠﻡ ﺒﻭﺍﺴﻁﺔ ﻫﺫﺍ ﺍﻟﺴﺠل ﺃﻴﻥ ﻴﺭﺠﻊ ........ﻭﺒﻌﺩ ﺘﻨﻔﻴﺫ ﺃﻤﺭ ﺇﺭﺠﻊ ﻴﻤﺤﻲ ﺍﻟﺴﺠل ﻤﻥ ﺫﺍﻜﺭﺓ ﺍﻟﻌﻭﺩﺓ . ﺍﻟﻤﻴﻜﺭﻭﻤﺭﺍﻗﺏ 16F84ﻴﺘﺤﻤل ﺘﺨﺯﻴﻥ ﻤﻭﺍﻀﻊ 8ﺇﺴﺘﺩﻋﺎﺀﺍﺕ ,ﻓﺈﺫﺍ ﺯﺍﺩﺕ ﻋﻥ ﺫﻟﻙ ,ﻓﺴﻴﻤﺤﻰ ﺘﻠﻘﺎﺌﻴﺎ ﻭﺍﺤﺩ ﻟﺩﺨﻭل ﺁﺨﺭ .ﻜﺫﻟﻙ ﺫﺍﻜﺭﺓ ﺍﻟﻌﻭﺩﺓ ﺘﺴﺘﺨﺩﻡ ﻓﻲ ﺍﻟﻤﻘﺎﻁﻌﺎﺕ ﻟﻨﻔﺱ ﺍﻟﻤﻬﻤﺔ ...ﻓﻲ ﺸﺭﺤﻨﺎ ﻟﻠﺒﺭﻤﺠﺔ ﺴﺘﺘﻀﺢ ﻟﻙ ﺍﻟﺼﻭﺭﺓ ﺃﻜﺜﺭ . 5 W اﻟﻤﯿﻜﺮو ﻣﻌﺎﻟﺞ ﻣﺆﺷﺮ اﻟﻮﺿﻊ ﻓﻲ اﻟﺼﻔﺮ ﻣﺆﺷﺮ اﻟﻤﻘﺎﻃﻌﺔ اﻟﺼﻔﺤﺔ 2 اﻟﺼﻔﺤﺔ 1 RAM ﺍﻟﻤﻴﻜﺭﻭﻤﺭﺍﻗﺏ ﻤﻥ ﺍﻟﺩﺍﺨل ﻤﻭﺍﺼﻔﺎﺕ . PIC16F84 -1ﻴﻔﻬﻡ 35ﺘﻌﻠﻴﻤﺔ ﺃﻭ ﺃﻤﺭ . -2ﻴﺴﺘﻁﻴﻊ ﺃﻥ ﻴﺨﺯﻥ ﺒﺫﺍﻜﺭﺘﻪ ﺒﺭﻨﺎﻤﺞ ﻤﻥ 1024ﺃﻤﺭ.ﻭﻫﺫﻩ ﺍﻟﺫﺍﻜﺭﺓ ﻤﻥ ﻨﻭﻉ ﻓﻼﺵ ,ﻭﺫﻟﻙ ﻴﻌﻨﻲ ﺃﻨﻨﺎ ﻨـﺴﺘﻁﻴﻊ ﺃﻥ ﻨﻜﺘـﺏ ﻭ ﻨﻤﺤـﻲ ﻤﺤﺘﻭﺍﻫﺎ ﺒﻭﺍﺴﻁﺔ ﺍﻟﻜﻬﺭﺒﺎﺀ ,ﻭ ﺇﺫﺍ ﻗﻁﻌﻨﺎ ﺍﻟﻜﻬﺭﺒﺎﺀ ﻋﻨﻬﺎ ﻓﻬﻲ ﺘﺤﻔﻅ ﺍﻟﻤﻌﻠﻭﻤﺎﺕ ﻟﻤﺩﺓ ﺃﺭﺒﻌﻴﻥ ﻋﺎﻤﺎ, 68 -3ﺒﺎﻴﺕ ﻤﻥ ﺫﺍﻜﺭﺓ . RAM 64 -4ﺒﺎﻴﺕ ﻟﻠﻤﻌﻠﻭﻤﺎﺕ ﻤﻥ ﻨﻭﻉ EEPROMﻨﻔﺱ ﻤﻭﺍﺼﻔﺎﺕ ﺍﻟﻔﻼﺵ. 15 -5ﺴﺠل ﻋﻤل ﺨﺎﺹ. 13 -6ﺒﻴﻥ ﺩﺨﻭل /ﺨﺭﻭﺝ -7ﺍﻟﻤﻘﺎﻁﻌﺔINT : O/Iﻤﻌﻨﻰ ﺫﻟﻙ ﺃﻥ ﺍﻟﺒﻴﺕ ﻴﻤﻜﻥ ﺃﻥ ﻴﺴﺘﻌﻤل ﻜﻤﺩﺨل ﻭ ﻜﻤﺨﺭﺝ. ﻋﻨﺩﻤﺎ ﻴﺤﺩﺙ ﺘﻐﻴﺭ ﻤﺎ ﻓﻲ ﻫﺫﺍ ﺍﻟﺒﻴﺕ )ﻤﻥ ﻭﺍﺤﺩ ﺇﻟﻰ ﺼﻔﺭ ﺃﻭ ﺒﺎﻟﻌﻜﺱ( ﻴﺘﻭﻗﻑ ﺍﻟﺒﺭﻨﺎﻤﺞ ﻋﻥ ﻋﻤﻠـﻪ ﺍﻟﻌـﺎﺩﻱ ﻭﻴﺫﻫﺏ ﺇﻟﻰ ﺍﻟﻤﻜﺎﻥ ﺍﻟﺫﻱ ﻴﺠﺩ ﺒﻪ ﻤﺎ ﻴﻔﻌل ﻓﻲ ﺤﺎل ﺍﻟﻤﻘﺎﻁﻌﺔ.ﻭﻫﺫﺍ ﺍﻟﻤﻜﺎﻥ ﻨﻜﻭﻥ ﻨﺤﻥ ﻗﺩ ﺒﺭﻤﺠﻨﺎﻩ ﻤﺴﺒﻘﺎ ﺒﺎﻟﻁﺒﻊ. PORTAو PORTB ﻗﻠﻨﺎ ﺒﺎﻥ ﻫﻨﺎﻙ 13ﻁﺭﻑ ﻴﻤﻜﻥ ﺃﻥ ﺘﺴﺘﻌﻤل ﻜﺩﺨﻭل ﻭ ﺨﺭﻭﺝ ﻭﻫﺫﻩ 13ﻁﺭﻑ ﺘﻨﻘـﺴﻡ ﺒـﺩﻭﺭﻫﺎ ﺇﻟـﻰ ﻤﺭﻓـﺄﻴﻥ ﺃﻭ PORTﻭﻫﻤـﺎ PORTAﻭ PORTBﻭﻨﻼﺤﻅ ﺃﻥ ﻜل ﻁﺭﻑ ﻟﻪ ﺭﻗﻡ ﻭﺍﺴﻡ ﻴﻌﺭﻑ ﺒﻪ . ﺇﺫﻥ ﻜل ﻤﻥ PORTAﻭ PORTBﻫﻤﺎ ﻋﺒﺎﺭﺓ ﻋﻥ ﺴﺠل ﻋﻤل ﺨﺎﺹ ﻤﺅﻟﻑ ﻤﻥ 8ﺃﺒﻴﺎﺕ.ﻜﻤﺎ ﻴﻭﻀﺢ ﺍﻟﺸﻜل ﺍﻟﺘﺎﻟﻲ : 6 ﺇﻥ ﺴﺠل ﺍﻟﻌﻤل PORTBﻫﻭ ﺒﺒﺴﺎﻁﺔ ﻤﻭﻗﻊ ﻓﻲ ﺍﻟﺫﺍﻜﺭﺓ ﻤﺅﻟﻑ ﻤﻥ ﺜﻤﺎﻨﻲ ﺃﺒﻴﺎﺕ .ﻓﻜل ﻤﺎ ﻴﻜﺘﺏ ﻓﻲ ﺴﺠل ﺍﻟﻌﻤل ﻫﺫﺍ ﺘﻅﻬﺭ ﻨﺘﻴﺠﺘـﻪ ﻓﻲ ﺍﻟﻁﺭﻑ ﺍﻟﺘﺎﺒﻊ ﻟﻪ .ﻓﺈﺫﺍ ﻜﺘﺒﻨﺎ 1ﻓﻲ ﺍﻟﺒﻴﺕ RP3ﻤﻥ ﺴﺠل ﺍﻟﻌﻤل ﺴﺘﻜﻭﻥ ﻟﺩﻴﻨﺎ ﻓﻲ ﻁﺭﻑ ﺍﻟﺘﺎﺒﻊ ﻟﻪ ﺍﻟﻘﻴﻤـﺔ 5Vﻭﻫـﺫﺍ ﻴﻌﻨـﻲ 1 ﻭﺍﻟﻌﻜﺱ ﺼﺤﻴﺢ . ﻻﺤﻅ ﺃﻥ ﺁﺨﺭ ﺜﻼﺜﺔ ﺃﺒﻴﺎﺕ ﻓﻲ ﺴﺠل ﺍﻟﻌﻤل PORTAﻏﻴﺭ ﻤﻭﺠﻭﺩﺓ ﻓﻜل ﻤﺎ ﺘﻜﺘﺒﻪ ﻫﻨﺎ ﻻ ﻗﻴﻤﺔ ﻟﻪ. ﻜﺨﻼﺼﺔ :ﺍﻟـ BORTAﻟﻪ 5ﺃﻁﺭﺍﻑ ﻭ ﺍﻟـ PORTBﻟﻪ 8ﺃﻁﺭﺍﻑ ﻭ ﻜل ﻫﺫﻩ ﺍﻷﻁﺭﺍﻑ ﻴﻤﻜﻥ ﺃﻥ ﺘﺒﺭﻤﺞ ﻜﻤﺩﺍﺨل ﺃﻭ ﻤﺨﺎﺭﺝ . ﻛﯿﻒ ﻧﺒﺮﻣﺞ PORTAو PORTB؟ ﻨﺴﺘﻌﻤل ﺴﺠﻼﻥ ﻋﻤل ﺨﺎﺹ ﻭﻫﻡ trisaﻭ trisbﻓﻜل ﺴﺠل ﻤﺅﻟﻑ ﻤﻥ 8ﺃﺒﻴﺎﺕ ﻭﻜل ﺒﻴﺕ ﻴﻤﺜل ﻁﺭﻑ ﻤﻌﻴﻥ ,ﻓﺈﺫﺍ ﺃﺭﺩﻨﺎ ﻫـﺫﺍ ﺍﻟﻁﺭﻑ ﻜﺨﺭﻭﺝ ﻨﻀﻊ 0ﻓﻲ ﺍﻟﺒﻴﺕ ﺍﻟﺘﺎﺒﻊ ﻟﻪ ﻭ 1ﻜﺩﺨﻭل ,ﺍﻨﻅﺭ ﺍﻟﺼﻭﺭﺓ. ﻣﺜ ﺎل :ﻨﺭﻴﺩ ﺒﺭﻤﺠﺔ ﺃﻁﺭﺍﻑ PORTBﻜﻤﺨﺎﺭﺝ ﻭ ﺃﻁﺭﺍﻑ PORTAﻜﻤﺩﺍﺨل ،ﺃﻜﺘﺏ ﺍﻟﺒﺭﻨﺎﻤﺞ ﺍﻟﻤﻨﺎﺴـﺏ ﺒﺎﺴـﺘﻌﻤﺎل ﻟﻐـﺔ ﺍﻵﻟـﺔ )(Assembleur ﻨﻀﻊ 1ﻓﻲ ﺍﻟﺒﻴﺕ ﺍﻟﺨﺎﻤﺱ ﻤﻥ ﺴﺠل STATUSﻟﻠﺫﻫﺎﺏ ﺇﻟﻰ ﺍﻟﺼﻔﺤﺔ ﺍﻟﺜﺎﻨﻴﺔ ﻤﻥ ﺍﻟﺫﺍﻜﺭ ﺓ; bsfSTATUS,5 ﻨﻀﻊ 0ﻓﻲ ﺍﻟﺴﺠل ; W MOVLW 0×00 MOVWF TRISB ﻨﻀﻊ 1F=11111ﻓﻲ ﺴﺠل ﺍﻟﻌﻤل; W MOVLW 0×1F MOVWF TRISA ﻨﻀﻊ 0ﻓﻲ TRISBﺇﺫﻥ ﺃﻁﺭﺍﻑ ﺍﻟـ PORTBﺍﻟﺜﻤﺎﻨﻴﺔ ﻜﻠﻬﺎ ﻤﺒﺭﻤﺠﺔ ﻜﻤﺨﺎﺭﺝ; ﻨﻀﻊ 1ﻓﻲ TRISAﺇﺫﻥ ﺃﻁﺭﺍﻑ ﺍﻟـ PORTAﺍﻟﺨﻤﺴﺔ ﻜﻠﻬﺎ ﻤﺒﺭﻤﺠﺔ ﻜﻤﺩﺍﺨل; ﻨﻀﻊ 0ﻓﻲ ﺍﻟﺒﻴﺕ ﺍﻟﺨﺎﻤﺱ ﻤﻥ ﺴﺠل STATUSﻟﻠﺭﺠﻭﻉ ﺇﻟﻰ ﺍﻟﺼﻔﺤﺔ ﺍﻷﻭﻟﻰ ﻤﻥ ﺍﻟﺫﺍﻜﺭﺓ; bcfSTATUS,5 ﻤﻼﺤﻅﺔ :ﻜل ﻤﺎ ﻴﺄﺘﻲ ﺒﻌﺩ );( )ﺍﻟﻨﻘﻁﺔ ﺍﻟﻔﺎﺼﻠﺔ( ﻓﻬﻭ ﻟﻴﺱ ﻤﻥ ﺍﻟﺒﺭﻨﺎﻤﺞ ﻭ ﻻ ﻴﺄﺨﺫﻩ ﺍﻟﻤﻴﻜﺭﻭﻤﺭﺍﻗﺏ ﺒﻌﻴﻥ ﺍﻻﻋﺘﺒﺎﺭ ،ﻭ ﺇﻨﻤﺎ ﻫﻭ ﻋﺒﺎﺭﺓ ﻋﻥ ﺘﻌﻠﻴﻘﺎﺕ ﻴﻀﻌﻬﺎ ﺍﻟﻤﺒﺭﻤﺞ . 7 ﻨﻼﺤﻅ ﺃﻥ TRISA ﻭ TRISBﻤﻭﺠﻭﺩﺍﻥ ﻓﻲ ﺍﻟﺼﻔﺤﺔ ﺍﻟﺜﺎﻨﻴﺔ ﺍﻟﺼﻔﺤﺔ ﺍﻟﺜﺎﻨﻴﺔ ﺍﻟﺼﻔﺤﺔ ﺍﻷﻭﻟﻰ اﻟﺴﺠﻞ : STATUS ﻻ ﺒﺩ ﻭﺍﻨﻙ ﺸﺎﻫﺩﺕ ﻓﻲ ﺴﺒﺎﻕ ﺍﻟﺴﻴﺎﺭﺍﺕ ﻴﺭﻓﻌﻭﻥ ﻋﻠﻤﺎ ﻟﻺﺸﺎﺭﺓ ﻟﻠﻤﺘﺴﺎﺒﻕ ﺒﺄﻨﻪ ﻭﺼل ﺨﻁ ﺍﻟﻨﻬﺎﻴﺔ ,ﻭﻓﻲ ﻜﺭﺓ ﺍﻟﻘﺩﻡ ﻴﺭﻓﻊ ﺍﻟﺤﻜـﻡ ﺍﻟﻌﻠـﻡ ﻟﻴﺸﻴﺭ ﺒﺎﻥ ﺍﻟﻜﺭﺓ ﺃﺼﺒﺤﺕ ﺨﺎﺭﺝ ﺍﻟﻤﻠﻌﺏ ,ﺃﻭ ﻜﺎﻥ ﻫﻨﺎﻙ ﻤﺨﺎﻟﻔﺔ ﻤﺎ...ﺍﻟﺦ .ﻭﻤﺎ ﻋﻼﻗﺔ ﺫﻟﻙ ﺒﺎﻻﻟﻜﺘﺭﻭﻨﻴﺎﺕ؟ ﻜـل ﻤـﺎ ﻓـﻲ ﺍﻷﻤـﺭ ,ﺃﻥ ﺍﻟﻤﻴﻜﺭﻭﻤﺭﺍﻗﺏ ﻟﻪ ﺃﻋﻼﻡ ﻴﺭﻓﻌﻬﺎ ﻋﻨﺩﻤﺎ ﻴﺤﺩﺙ ﺸﻲﺀ ﻤﺎ ,ﻭ ﻜﺄﻨﻪ ﻴﻘﻭل ﻟﻨﺎ ﻭﺒﻜل ﻟﻁﻑ ,ﺤﺩﺙ ﻫﺫﺍ ﻓﺎﺘﺨﺫ ﺍﻟﻘﺭﺍﺭ ﺍﻟﺫﻱ ﻴﻨﺎﺴﺒﻙ,ﻓﻬﻭ ﺒﻬﺫﺍ ﻴﺴﺎﻋﺩﻨﺎ ﻋﻠﻰ ﺍﻟﺘﺤﻜﻡ ﻓﻲ ﺒﺭﻨﺎﻤﺠﻨﺎ ﻭﻤﺎ ﻨﺭﻴﺩﻩ ﻨﺤﻥ ﻤﻨﻪ ﺃﻥ ﺒﻔﻌل. ﻗﻠﻨﺎ ﺃﻥ ﻫﻨﺎﻙ 15ﺴﺠل ﻋﻤل ,ﻓﺈﺤﺩﻯ ﻫﺫﻩ ﺍﻟﺴﺠﻼﺕ ﻴﺴﻤﻰ " "STATUSﻭﻤﻌﻨﺎﻫﺎ ﺤﺎﻟﺔ ,ﻓﻬﻭ ﻴﻌﺒﺭ ﻋﻥ ﺤﺎﻟﺔ ﺍﻟﻤﻴﻜﺭﻭﻤﺭﺍﻗﺏ .ﻓـﺴﺠل STATUSﻫﺫﺍ ﻤﺅﻟﻑ ﻤﻥ 8ﺒﻴﺕ ﻋﻠﻰ ﺍﻟﺸﻜل ﺍﻟﺘﺎﻟﻲ: 8 bit 7 IRP bit 5 RP0 bit 6 RP1 bit3 PD bit 4 TO bit 2 Z bit 1 DC bit 0 C ﺍﻟﺒﻴﺕ ﺭﻗﻡ 6ﻭ 7ﻻ ﻭﻅﻴﻔﺔ ﻟﻬﻡ ﻓﻲ ﻫﺫﺍ ﺍﻟﻤﻴﻜﺭﻭﻤﺭﺍﻗﺏ 16F84ﻭﻴﺠﺏ ﺃﻥ ﻴﺒﻘﻭﺍ ". "0 ﺍﻟﺒﻴﺕ ﺭﻗﻡ RP0 , 5 ﻴﺴﺘﻌﻤل ﻻﺨﺘﻴﺎﺭ ﺃﻱ ﺼﻔﺤﺔ ﺘﺭﻴﺩ ﺍﻟﺩﺨﻭل ﺇﻟﻴﻬﺎ ﻓﻲ ﺍﻟﺫﺍﻜﺭﺓ ،ﺼﻔﺤﺔ 1ﺃﻭ ﺼﻔﺤﺔ . 0ﻓﺈﺫﺍ ﺃﺭﺩﻨﺎ ﺍﻟﺩﺨﻭل ﺇﻟـﻰ ﺍﻟﺼﻔﺤﺔ 0ﻨﻀﻊ 0ﻓﻲ ﻫﺫﺍ ﺍﻟﺒﻴﺕ ﻭﺍﻟﻰ ﺍﻟﺼﻔﺤﺔ 1ﻨﻀﻊ .1 ﺍﻟﺒﻴﺕ ﺭﻗﻡ TO 4ﻫﻭ ﻋﻠﻡ ﻴﺘﻌﻠﻕ ﺒﺎﻟﻭﻗﺕ ﻭﺴﻨﺸﺭﺤﻪ ﺒﺎﻟﺘﻔﺼﻴل ﻋﻨﺩﻤﺎ ﻨﺼل ﺇﻟﻰ ﺍﻷﻭﺍﻤﺭ ﺍﻟﻤﺘﻌﻠﻘﺔ ﺒﻪ. ﺍﻟﺒﻴﺕ ﺭﻗﻡ 3 PDﻟﻪ ﻋﻼﻗﺔ ﺒﺎﻟﺘﻴﺎﺭ ﺍﻟﻜﻬﺭﺒﺎﺌﻲ ﻭﺴﻨﺸﺭﺤﻪ ﻋﻨﺩﻤﺎ ﻨﺼل ﺍﻷﻤﺭﻴﻥ ﺍﻟﻤﺘﻌﻠﻘﻴﻥ ﺒﻪ ﻭﻫﻡ CLRWDT,SLEEP ﺃﻤﺎ ﻤﺎ ﺘﺒﻘﻰ,ﺍﻟﺒﻴﺕ 0ﻭ 1ﻭ 2ﻭﻫﻡ Z , DC , Cﻋﻠﻰ ﺍﻟﺘﺭﺘﻴﺏ ﻓﻬﻡ ﺍﻷﻋﻼﻡ ﺍﻟﺘﻲ ﻨﺸﺭﺤﻬﺎ ﻓﻲ ﻤﺎ ﺴﻴﺄﺘﻲ . ﺍﻷﻋﻼﻡ ﻓﻲ ﻋﻤﻠﻴﺔ ﺍﻟﺠﻤﻊ: ﺇﺫﺍ ﻁﻠﺒﺕ ﻤﻥ ﺍﻟﻤﻴﻜﺭﻭﻤﺭﺍﻗﺏ ﺃﻥ ﻴﺠﻤﻊ ﻟﻙ ﺭﻗﻤﻴﻥ ﻭﻜﺎﻨﺕ ﺍﻟﻨﺘﻴﺠﺔ ﺍﻜﺒﺭ ﻤﻥ 255ﻓﺎﻟﻤﻴﻜﺭﻭﻤﺭﺍﻗﺏ ﻴﻀﻊ ﺃﻭﺘﻭﻤﺎﺘﻴﻜﻴﺎ ﻓﻲ ﺍﻟﻌﻠﻡ Cﻭﺍﺤـﺩ ) .(1ﻭﻴﻀﻊ ) ( 0ﻓﻲ ﺤﺎﻟﻪ ﻋﺩﻡ ﺘﺠﺎﻭﺯ ﻫﺫﺍ ﺍﻟﺭﻗﻡ "."255 ﺃﻤﺎ ﺍﻟﻌﻠﻡ DCﻓﻬﻭ ﻴﻌﺒﺭ ﻋﻥ ﻤﺎ ﻴﺤﺩﺙ ﻓﻲ ﺃﻭل ﺃﺭﺒﻌﺔ ﺃﺒﻴﺎﺕ,ﻭﻫﺫﺍ ﻤﻌﻨﺎﻩ ﺍﻨﻪ ﺇﺫﺍ ﻜﺎﻥ ﻫﻨﺎﻙ ﺘﺠﺎﻭﺯ ﻟﻠﺭﻗﻡ 15ﻤﻥ ﻨﻅﺎﻤﻨﺎ ﺍﻟﻌﺸﺭﻱ ﻓﻌﻠﻡ DC=1ﻭﻓﻲ ﺤﺎل ﺍﻟﻌﻜﺱ ﻓﻬﻭ ﻴﺴﺎﻭﻱ . 0 ﺍﻟﻌﻠﻡ Z=1ﻓﻲ ﺤﺎﻟﺔ ﻭﺍﺤﺩﻩ ﻓﻘﻁ.ﻭﻫﻲ ﻋﻨﺩﻤﺎ ﻴﻜﻭﻥ ﺠﻭﺍﺏ ﺍﻟﻌﻤﻠﻴﺔ ﺍﻟﺤﺴﺎﺒﻴﺔ "ﻭﺍﺤﺩ" ,ﻭﻤﺎ ﺩﻭﻥ ﺫﻟﻙ ﻓﺎﻟﻌﻠﻡ ﻴﺒﻘﻰ ﻤﺴﺎﻭﻴﺎ ﻟﻠﺼﻔﺭ ). (0 ﺍﻷﻋﻼﻡ ﻓﻲ ﻋﻤﻠﻴﺔ ﺍﻟﻁﺭﺡ : ﻋﻨﺩﻤﺎ ﻴﻜﻭﻥ ﺍﻟﺠﻭﺍﺏ ﺭﻗﻤﺎ ﺍﻴﺠﺎﺒﻴﺎ C=1 ﻭﺴﻠﺒﻴﺎ C=0ﻤﺜﻼ ﻋﻠﻡ DCﻴﺴﺎﻭﻱ ﻭﺍﺤﺩ ﻋﻨﺩﻤﺎ ﻴﻜﻭﻥ ﺃﻭل ﺃﺭﺒﻌﺔ ﺃﺒﻴﺎﺕ ﻤﻥ ﺴﺠل Wﺍﺼﻐﺭ ﻤﻥ ﺃﻭل ﺃﺭﺒﻌﺔ ﺒﻴﺕ ﻤﻥ ﺍﻟﺴﺠل ﺍﻟﺫﻱ ﺘﺭﻏﺏ ﻓﻲ ﻁﺭﺤﻪ, ﻭﺒﻌﻜﺱ ﺫﻟﻙ ﻓﻬﻭ ﺼﻔﺭ. ﺍﻟﻌﻠﻡ Z=1ﻋﻨﺩﻤﺎ ﺘﻜﻭﻥ ﻗﻴﻤﺔ ﺍﻻﺜﻨﻴﻥ ﻤﺘﺴﺎﻭﻴﺔ,ﻭﻤﺎ ﺩﻭﻥ ﺫﻟﻙ ﻓﻬﻭ ﺼﻔﺭ. ﺃﺼﺒﺢ ﻋﻨﺩﻨﺎ ﺍﻵﻥ ﻓﻜﺭﻩ ﻋﻥ ﺍﻷﻋﻼﻡ ﻭﻭﻅﺎﺌﻔﻬﺎ ﻓﻲ ﺍﻟﺠﻤﻊ ﻭﺍﻟﻁﺭﺡ ,ﻓﺒﺎﻟﻁﺒﻊ ﻟﻬﺎ ﻭﻅﺎﺌﻑ ﺃﺨﺭﻯ ﻤﺘﻌﻠﻘﺔ ﺒﺎﻷﻭﺍﻤﺭ ﺍﻟﺘﻲ ﻟﻡ ﻨﺩﺭﺴﻬﺎ ﺒﻌﺩ. 9