You are on page 1of 101

‫ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش‬

‫اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ‬
‫ﻃﺮاﺣﯽ‪ ،‬ﺗﻮﻟﯿﺪ‪ ،‬اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ‬
‫آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ‬

‫ﺩﻳﺠﻴﺘﺎﻝ‪:‬‬

‫‪r‬‬
‫ﺑﻪ ﺍﻳﻦ ﻋﻠﺖ ﻛﻪ ﺍﺻﻮﻝ ﭘﺮﺩﺍﺯﻧﺪﻩﻫﺎ ﻭﻣﻴﻜﺮﻭﻛﻨﺘﺮﻟﺮﻫﺎ ﺑﺮ ﻣﺒﻨﺎﻱ ﺩﻳﺠﻴﺘﺎﻝ ﭘﺎﻳﻪﺭﻳﺰﻱ ﺷﺪﻩ ﺍﺳﺖ ﺷﻤﺎ‬

‫‪.i‬‬
‫ﺩﺭ ﻛﺎﺭ ﺑﺎ ﻣﻴﻜﺮﻭ ﺑﻪ ﻣﺒﺎﺣﺚ ﺩﻳﺠﻴﺘﺎﻝ ﺑﺮﺧﻮﺭﺩ ﻣﻲﻛﻨﻴﺪ‪.‬‬

‫‪s‬‬
‫‪r‬‬
‫ﺩﻳﺠﻴﺘﺎﻝ ﺗﻤﺎﻣﹰﺎ ﺻﻔﺮﻫﺎ ﻭ ﻳﻚﻫﺎﺋﻲ ﻫﺴﺘﻨﺪ ﻛﻪ ﺑﻮﺳﻴﻠﻪ ﺁﻥﻫﺎ ﺗﻤﺎﻣﻲ ﻋﻤﻠﻴﺎﺕﻫﺎﻱ ﺭﻳﺎﺿﻲ ﻭ‬

‫‪e‬‬
‫‪k‬‬
‫ﺍﻟﻜﺘﺮﻭﻧﻴﻜﻲ ﺻﻮﺭﺕ ﻣﻲﮔﻴﺮﺩ ﻭ ﻫﻴﭻﭼﻴﺰ ﺟﺰ ﺻﻔﺮ ﻭ ﻳﻚ ﺑﺮﺍﻱ ﺩﻳﺠﻴﺘﺎﻝ ﻣﻌﻨﺎ ﻭ ﻣﻔﻬﻮﻣﻲ ﻧﺪﺍﺭﺩ‪.‬‬

‫‪a‬‬
‫ﺩﺭ ﺷﻜﻞ ﺯﻳﺮ ﭼﻨﺪ ﻣﺘﺮﺍﺩﻑ ﺩﻳﺠﺘﺎﻟﻲ ﻧﺸﺎﻥ ﺩﺍﺩﻩ ﺷﺪﻩ ﺍﺳﺖ‪:‬‬
‫‪lM‬‬
‫‪o‬‬

‫ﺭﻳﺎﺿﻴﺎﺕ‬ ‫ﺍﻟﻜﺘﺮﻭﻧﻴﻚ‬ ‫ﺷﺮﻁ ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ‬ ‫ﺻﺤﺒﺖﻫﺎﻱ ﻋﺎﻣﻴﺎﻧﻪ‬


‫‪tr‬‬

‫‪1‬‬ ‫‪+5V‬‬ ‫ﺩﺭﺳﺖ‬ ‫ﺑﻠﻪ‬


‫‪n‬‬

‫‪0‬‬ ‫‪0V‬‬ ‫ﻏﻠﻂ‬ ‫ﺧﻴﺮ‬


‫‪o‬‬
‫‪.C‬‬

‫ﻣﻔﻬﻮﻡ ﺑﻴﺖ ﻭ ﺑﺎﻳﺖ‪:‬‬


‫‪w‬‬

‫ﻛﻮﭼﻜﺘﺮﻳﻦ ﺧﺎﻧﻪ ﺣﺎﻓﻈﻪ ﺭﺍ ﺑﻴﺖ ﻧﺎﻣﮕﺬﺍﺭﻱ ﻛﺮﺩﻩﺍﻧﺪ‪.‬‬


‫‪w‬‬

‫ﻫﺮ ﭼﻬﺎﺭ ﺑﻴﺖ ﺭﺍ ﻳﻚ ﻧﻴﺒﻞ ﮔﻮﻳﻨﺪ‪.‬‬


‫‪w‬‬

‫ﻫﺮ ﻫﺸﺖ ﺑﻴﺖ ﺭﺍ ﻳﻚ ﺑﺎﻳﺖ ﮔﻮﻳﻨﺪ‪.‬‬

‫ﻫﺮ ﺩﻭ ﺑﺎﻳﺖ ﻳﻚ ﻛﻠﻤﻪ ﻳﺎ ‪ Word‬ﺍﺳﺖ‪.‬‬

‫ﻣﺒﻨﺎﻯ ﺍﻋﺪﺍﺩ ﺩﺭ ﺭﻳﺎﺿﻰ‪:‬‬


‫ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش‬
‫اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ‬
‫ﻃﺮاﺣﯽ‪ ،‬ﺗﻮﻟﯿﺪ‪ ،‬اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ‬
‫آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ‬

‫ﺍﮔﺮ ﻛﺴﻲ ﺍﺯ ﺷﻤﺎ ﺑﭙﺮﺳﺪ ﭼﻨﺪ ﺳﺎﻝ ﺩﺍﺭﻳﺪ؟ ﭼﻪ ﭘﺎﺳﺨﻲ ﺧﻮﺍﻫﻴﺪ ﺩﺍﺩ؟‬

‫‪ ١٨‬ﺳﺎﻝ ﺩﺍﺭﻡ‪ ٣٦ ،‬ﺳﺎﻝ ﺩﺍﺭﻡ ﻭ ﻳﺎ ﻫﺮ ﭘﺎﺳﺦ ﺩﻳﮕﺮﻱ‪ .‬ﺩﺭ ﺍﻳﻦ ﭘﺎﺳﺦﻫﺎ ﺍﺯ ﺍﻋﺪﺍﺩﻱ ﺍﺳﺘﻔﺎﺩﻩ ﺷﺪﻩ‬

‫‪r‬‬
‫‪.i‬‬
‫ﺍﺳﺖ ﻛﻪ ﺍﺯ ﺗﺮﻛﻴﺐ ‪ ٠،١،٢،٣،٤،٥،٦،٧،٨،٩‬ﺳﺎﺧﺘﻪ ﺷﺪﻩ ﺍﺳﺖ‪ .‬ﺑﻪﺻﻮﺭﺕ ﻣﺨﺘﺼﺮ ﻣﻲﺗﻮﺍﻧﻴﻢ ﺑﮕﻮﺋﻴﻢ ﻣﺎ‬

‫‪s‬‬
‫ﺑﺮﺍﻱ ﻣﺸﺨﺺ ﻛﺮﺩﻥ ﺗﻤﺎﻡ ﺍﻋﺪﺍﺩ ﺍﺯ ﻳﻜﻲ ﻳﺎ ﺗﺮﻛﻴﺐ ﭼﻨﺪ ﺭﻗﻢ ﻓﻮﻕ ﺍﺳﺘﻔﺎﺩﻩ ﻣﻲﻛﻨﻴﻢ ﻳﺎ ﺑﻪﺻﻮﺭﺕ‬

‫‪r‬‬
‫‪e‬‬
‫ﺳﺎﺩﻩﺗﺮ ﺍﺯ ﺩﻩ ﺭﻗﻢ ﺑﺮﺍﻱ ﻣﺸﺨﺺ ﻛﺮﺩﻥ ﺗﻤﺎﻡ ﺍﻋﺪﺍﺩ ﺍﺳﺘﻔﺎﺩﻩ ﻣﻲﻛﻨﻴﻢ‪.‬‬

‫‪k‬‬
‫‪a‬‬ ‫ﻧﺎﻡﮔﺬﺍﺭﻯ ﻣﺒﻨﺎﻫﺎ‪:‬‬
‫‪lM‬‬
‫ﺑﻪ ﺗﻌﺪﺍﺩ ﺭﻗﻢﻫﺎﺋﻲ ﻛﻪ ﺑﺮﺍﻱ ﻣﺸﺨﺺ ﻛﺮﺩﻥ ﺍﻋﺪﺍﺩ ﺍﺳﺘﻔﺎﺩﻩ ﻣﻲﻧﻤﺎﺋﻴﻢ ﻣﺒﻨﺎﻱﻛﺎﺭﻱ ﮔﻮﺋﻴﻢ‪.‬‬
‫‪o‬‬

‫ﻣﺒﻨﺎﻱ ﻛﺎﻣﭙﻴﻮﺗﺮ ﺩﻭ ﻣﻲﺑﺎﺷﺪ ﺯﻳﺮﺍ ﻳﻚ ﺩﺳﺘﮕﺎﻩ ﺩﻳﺠﻴﺘﺎﻟﻲ ﻓﻘﻂ ﺩﻭ ﺭﻗﻢ ﺻﻔﺮ ﻭ ﻳﻚ ﺭﺍ‬ ‫ﻣﺜﺎل‪:‬‬
‫‪tr‬‬

‫ﺑﺮﺍﻱ ﺗﻤﺎﻡ ﻛﺎﺭﻫﺎﻳﺶ ﺍﺳﺘﻔﺎﺩﻩ ﻣﻲﻛﻨﺪ‪.‬‬


‫‪n‬‬
‫‪o‬‬

‫ﺗﺒﺪﻳﻞ ﻣﺒﻨﺎﻫﺎ‪:‬‬
‫‪.C‬‬

‫ﺷﻤﺎ ﻭﻗﺘﻲ ﺍﺯ ﺻﻔﺮ ﺷﺮﻭﻉ ﺑﻪ ﺷﻤﺎﺭﺵ ﻣﻲﻧﻤﺎﺋﻴﺪ‪ ،‬ﺑﻌﺪ ﺍﺯ ﻋﺪﺩ ﻧﻪ ﺩﻳﮕﺮ ﺭﻗﻤﻲ ﺑﺮﺍﻱ ﻧﻤﺎﻳﺶ ﻋﺪﺩ‬
‫‪w‬‬

‫ﺑﻌﺪﻱ ﻧﺪﺍﺭﻳﺪ ﭘﺲ ﺑﺎ ﺗﺮﻛﻴﺐ ﺩﻭ ﺭﻗﻢ ﻳﻚ ﻭ ﺻﻔﺮ ﻋﺪﺩ ﺟﺪﻳﺪﻱ ﻣﻲﺳﺎﺯﻳﺪ ﻳﻌﻨﻲ ﺑﻌﺪ ﺍﺯ ﺷﻤﺎﺭﺵ ﺩﻩ‬
‫‪w‬‬

‫ﺭﻗﻢ ﺩﺭ ﻣﺒﻨﺎﻱ ﺩﻩ ﺑﻪ ﻋﺪﺩ )‪ (١٠‬ﻣﻲﺭﺳﻴﺪ‪ .‬ﺩﺭ ﻣﺒﻨﺎﻱ ﺩﻭ ﺷﻤﺎ ﭘﺲ ﺍﺯ ﺷﻤﺎﺭﺵ ﺩﻭ ﺭﻗﻢ ﺑﻪ ﻋﺪﺩ )‪(١٠‬‬
‫‪w‬‬

‫ﺧﻮﺍﻫﻴﺪ ﺭﺳﻴﺪ‪.‬‬

‫ﺩﺭ ﺟﺪﻭﻝ ﺯﻳﺮ ﭼﻬﺎﺭﻣﺒﻨﺎﻱ ﺍﺻﻠﻲ ﻧﻤﺎﻳﺶ ﺩﺍﺩﻩ ﺷﺪﻩ ﺍﺳﺖ‪.‬‬


‫ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش‬
‫اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ‬
‫ﻃﺮاﺣﯽ‪ ،‬ﺗﻮﻟﯿﺪ‪ ،‬اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ‬
‫آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ‬

‫ﻣﺒﻨﺎﻱ‬ ‫ﻣﺒﻨﺎﻱ‬ ‫ﻣﺒﻨﺎﻱ‬ ‫ﻣﺒﻨﺎﻱ‬


‫‪Decimal‬‬ ‫‪Octal‬‬ ‫‪Binary‬‬ ‫‪Hexadecimal‬‬
‫ﺩﻩ‬ ‫ﻫﺸﺖ‬ ‫ﺩﻭ‬ ‫ﺷﺎﻧﺰﺩﻩ‬

‫‪r‬‬
‫‪.i‬‬
‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬
‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬

‫‪s‬‬
‫‪2‬‬ ‫‪2‬‬ ‫‪10‬‬ ‫‪2‬‬

‫‪r‬‬
‫‪3‬‬ ‫‪3‬‬ ‫‪11‬‬ ‫‪3‬‬

‫‪e‬‬
‫‪4‬‬ ‫‪4‬‬ ‫‪100‬‬ ‫‪4‬‬

‫‪k‬‬
‫‪5‬‬ ‫‪5‬‬ ‫‪101‬‬ ‫‪5‬‬

‫‪a‬‬
‫‪6‬‬ ‫‪6‬‬ ‫‪110‬‬ ‫‪6‬‬
‫‪lM‬‬
‫‪7‬‬ ‫‪7‬‬ ‫‪111‬‬ ‫‪7‬‬
‫‪8‬‬ ‫‪10‬‬ ‫‪1000‬‬ ‫‪8‬‬
‫‪9‬‬ ‫‪11‬‬ ‫‪1001‬‬ ‫‪9‬‬
‫‪o‬‬

‫‪10‬‬ ‫‪12‬‬ ‫‪1010‬‬ ‫‪A‬‬


‫‪tr‬‬

‫‪11‬‬ ‫‪13‬‬ ‫‪1011‬‬ ‫‪B‬‬


‫‪12‬‬ ‫‪14‬‬ ‫‪1100‬‬ ‫‪C‬‬
‫‪n‬‬

‫‪13‬‬ ‫‪15‬‬ ‫‪1101‬‬ ‫‪D‬‬


‫‪o‬‬

‫‪14‬‬ ‫‪16‬‬ ‫‪1110‬‬ ‫‪E‬‬


‫‪.C‬‬

‫‪15‬‬ ‫‪17‬‬ ‫‪1111‬‬ ‫‪F‬‬


‫‪16‬‬ ‫‪18‬‬ ‫‪10000‬‬ ‫‪10‬‬
‫‪w‬‬

‫ﺑﺰﺭﮔﺘﺮﻳﻦ ﺭﻗﻢ ﻣﺒﻨﺎﻱ ﺷﺎﻧﺰﺩﻩ ﺑﺮﺍﺑﺮ ﺑﺰﺭﮔﺘﺮﻳﻦ ﻋﺪﺩ ﭼﻬﺎﺭ ﺭﻗﻤﻲ ﻣﺒﻨﺎﻱ ﺩﻭ ﺍﺳﺖ ﻭ‬ ‫ﻧﮑﺘﻪ‪:‬‬
‫‪w‬‬

‫ﺑﺰﺭﮔﺘﺮﻳﻦ ﺭﻗﻢ ﻣﺒﻨﺎﻱ ﻫﺸﺖ ﺑﺮﺍﺑﺮ ﺑﺰﺭﮔﺘﺮﻳﻦ ﻋﺪﺩ ﺳﻪ ﺭﻗﻤﻲ ﻣﺒﻨﺎﻱ ﺩﻭ ﻣﻲﺑﺎﺷﺪ ﻭ ﺍﺯ ﺍﻳﻦ ﻧﻜﺘﻪ ﺍﻳﻦﮔﻮﻧﻪ‬
‫‪w‬‬

‫ﻣﻲﺗﻮﺍﻥ ﺍﺳﺘﻔﺎﺩﻩ ﻛﺮﺩ ﻛﻪ ﺑﺮﺍﻱ ﺗﺒﺪﻳﻞ ﺍﻋﺪﺍﺩ ﻣﺒﻨﺎﻱ ﺷﺎﻧﺰﺩﻩ ﻣﻲﺗﻮﺍﻥ ﻫﺮ ﺭﻗﻢ ﺁﻥﺭﺍ ﺑﺎ ﭼﻬﺎﺭ ﺭﻗﻢ ﻣﺒﻨﺎﻱ ﺩﻭ‬

‫ﻣﺘﻨﺎﻇﺮ ﺁﻥ ﺭﻗﻢ ﺟﺎﻳﮕﺰﻳﻦ ﻛﺮﺩ ﻭ ﻫﺮ ﺭﻗﻢ ﻣﺒﻨﺎﻱ ﻫﺸﺖ ﺭﺍ ﻣﻲﺗﻮﺍﻥ ﺑﺎﺳﻪ ﺭﻗﻢ ﻣﺒﻨﺎﻱ ﺩﻭ ﺟﺎﻳﮕﺰﻳﻦ ﻛﺮﺩ‪.‬‬

‫ﻣﺜﺎل‪ :‬ﻋﺪﺩ ‪ 5D1A‬ﺭﺍ ﺑﻪ ﻣﺒﻨﺎﻱ ﺩﻭ ﺗﺒﺪﻳﻞ ﻛﻨﻴﺪ‪.‬‬


‫ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش‬
‫اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ‬
‫ﻃﺮاﺣﯽ‪ ،‬ﺗﻮﻟﯿﺪ‪ ،‬اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ‬
‫آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ‬

‫‪5‬‬ ‫‪D‬‬ ‫‪1‬‬ ‫‪A‬‬


‫‪0‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪1‬‬

‫‪r‬‬
‫‪.i‬‬
‫ﺑﻪ ﺟﺪﻭﻝ ﻓﻮﻕ ﺩﻗﺖ ﻛﻨﻴﺪ ﺭﻗﻤﻲ ﻣﺎﻧﻨﺪ ‪ 1H‬ﺑﺮﺍﺑﺮ ﻳﻚ ﺭﻗﻢ ﻣﺒﻨﺎﻱ ﺩﻭ ﺍﺳﺖ ﺩﺭ ﻧﺘﻴﺠﻪ ﺳﻪ ﺭﻗﻢ‬

‫‪s‬‬
‫‪r‬‬
‫ﺳﻤﺖ ﭼﭗ ﺭﺍ ﺑﺎ ﭘﺮ ﺻﻔﺮ ﻣﻲﻧﻤﺎﺋﻴﻢ‪.‬‬

‫‪e‬‬
‫‪k‬‬
‫ﻣﻔﻬﻮﻡ ﭘﻮﺭﺕ‪:‬‬

‫‪a‬‬
‫ﭘﻮﺭﺕ ﺩﺭ ﺍﺻﻄﻼﺡ ﺑﻪ ﻣﻌﻨﺎﻱ ﺩﺭﮔﺎﻩ ﺍﺳﺖ‪ .‬ﻳﻌﻨﻲ ﺟﺎﻳﮕﺎﻫﻲ ﻛﻪ ﺑﻪﺗﻮﺍﻥ ﺍﺯ ﺁﻥ ﺑﻪﻋﻨﻮﺍﻥ ﻣﺤﻞ ﻭﺭﻭﺩ‬
‫‪lM‬‬

‫ﻭ ﺧﺮﻭﺝ ﺩﺍﺩﻩ ﺍﺳﺘﻔﺎﺩﻩ ﻛﺮﺩ‪ .‬ﻣﻴﻜﺮﻭﻛﻨﺘﺮﻟﺮ ﺧﺎﻧﻮﺍﺩﻩ ‪ 8x51‬ﺩﺍﺭﺍﻱ ‪ ٤‬ﭘﻮﺭﺕ ﺍﺳﺖ ﻛﻪ ﺑﻪ ﺗﺮﺗﻴﺐ‬
‫‪o‬‬

‫)‪ (P3),(P2),(P1),(P0‬ﻧﺎﻣﮕﺬﺍﺭﻱ ﺷﺪﻩ ﺍﺳﺖ‪ .‬ﻫﺮ ﭘﻮﺭﺕ ﺩﺍﺭﺍﻱ ﻫﺸﺖ ﭘﻴﻦ ﺍﺳﺖ ﻛﻪ ﺑﺎ ﻫﻤﺎﻥ ﻧﺎﻡ‪،‬‬
‫‪tr‬‬

‫ﻳﻚ ﺑﺎﻳﺖ ﺍﺯ ﺣﺎﻓﻈﻪ ‪ RAM‬ﺭﺍ ﺑﻪ ﺧﻮﺩ ﺍﺧﺘﺼﺎﺹ ﺩﺍﺩﻩ ﺍﺳﺖ‪ .‬ﺩﺭ ﻧﺘﻴﺠﻪ ﻫﺮ ﺑﻴﺖ ﻣﺘﻨﺎﻇﺮ ﻳﻚ ﭘﻴﻦ ﺍﺳﺖ‬
‫‪n‬‬
‫‪o‬‬

‫ﻭ ﺑﺎ ﻳﻚ ﻛﺮﺩﻥ ﻫﺮ ﺑﻴﺖ ﭘﺎﻳﻪ ﻣﺘﻨﺎﻇﺮ ﺁﻥ ﺑﻪ ﺳﻄﺢ ﻣﻨﻄﻘﻲ )‪ (+٥‬ﻣﻲ ﺭﻭﺩ ﻭ ﺑﺎ ﺻﻔﺮ ﻛﺮﺩﻥ ﻫﺮ ﺑﻴﺖ ﭘﺎﻳﻪ‬
‫‪.C‬‬

‫ﻧﻈﻴﺮ ﺁﻥ ‪ GND‬ﻣﻲﺷﻮﺩ‪ .‬ﺩﺭ ﻭﺍﻗﻊ ‪ ٤‬ﭘﻮﺭﺕ ﻣﻴﻜﺮﻭﻛﻨﺘﺮﻟﺮ ‪ ٣٢‬ﭘﻴﻦ ﺍﺯ ‪ ٤٠‬ﭘﻴﻦ ﻣﻴﻜﺮﻭ ﺭﺍ ﺍﺷﻐﺎﻝ ﻛﺮﺩﻩ‬
‫‪w‬‬

‫ﺍﺳﺖ‪.‬‬
‫‪w‬‬

‫ﺑﺮﺭﺳﻰ ﭘﺎﻳﻪﻫﺎﻯ ﻣﻴﮑﺮﻭﮐﻨﺘﺮﻟﺮ‪: 89C51‬‬


‫‪w‬‬

‫ﭘﺎﻳﻪﻫﺎﻯ ‪ ١‬ﺗﺎ ‪:٨‬‬


‫ﺍﻳﻦ ﭘﺎﻳﻪﻫﺎ ﻣﺮﺑﻮﻁ ﺑﻪ ﭘﻮﺭﺕ ﻳﻚ ﻣﻲﺑﺎﺷﻨﺪ ﻛﻪ ﺑﻪ ﺻﻮﺭﺕ ﺯﻳﺮ ﻧﻤﺎﻳﺶ ﺩﺍﺩﻩ ﻣﻲﺷﻮﺩ‪:‬‬
‫ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش‬
‫اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ‬
‫ﻃﺮاﺣﯽ‪ ،‬ﺗﻮﻟﯿﺪ‪ ،‬اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ‬
‫آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ‬

‫ﭘﻮﺭﺕ ‪P1‬‬

‫‪P1.7‬‬ ‫‪P1.6‬‬ ‫‪P1.5‬‬ ‫‪P1.4‬‬ ‫‪P1.3‬‬ ‫‪P1.2‬‬ ‫‪P1.1‬‬ ‫‪P1.0‬‬

‫‪r‬‬
‫‪8‬‬ ‫‪7‬‬ ‫‪6‬‬ ‫‪5‬‬ ‫‪4‬‬ ‫‪3‬‬ ‫‪2‬‬ ‫‪1‬‬

‫‪.i‬‬
‫ﭘﺎﻳﻪﻫﺎﻯ ‪ ١٠‬ﺗﺎ ‪:١٧‬‬

‫‪s‬‬
‫‪r‬‬
‫ﺍﻳﻦ ﭘﺎﻳﻪﻫﺎ ﻣﺮﺑﻮﻁ ﺑﻪ ﭘﻮﺭﺕ ﺳﻪ ﻣﻴﻜﺮﻭﻛﻨﺘﺮﻟﺮ ﺍﺳﺖ ﻭ ﻣﺘﻨﺎﻇﺮ ﺑﺎ ﺑﺎﻳﺖ ‪ P3‬ﺍﺳﺖ‪.‬‬

‫‪e‬‬
‫‪k‬‬
‫ﭘﻮﺭﺕ ‪P3‬‬

‫‪P3.7‬‬ ‫‪P3.6‬‬ ‫‪P3.5‬‬ ‫‪P3.4‬‬ ‫‪P3.3‬‬


‫‪a‬‬
‫‪P3.2‬‬ ‫‪P3.1‬‬ ‫‪P3.0‬‬
‫‪lM‬‬
‫‪17‬‬ ‫‪16‬‬ ‫‪15‬‬ ‫‪14‬‬ ‫‪13‬‬ ‫‪12‬‬ ‫‪11‬‬ ‫‪10‬‬
‫‪o‬‬

‫ﭘﻮﺭﺕ ﺳﻪ ﻋﻼﻭﻩ ﺑﺮﺍﻳﻨﻜﻪ ﺑﻪ ﻋﻨﻮﺍﻥ ﺩﺭﮔﺎﻩ ﻭﺭﻭﺩﻱ ﻭ ﺧﺮﻭﺟﻲ ﺍﺳﺘﻔﺎﺩﻩ ﻣﻲﺷﻮﺩ ﺑﺮﺍﻱ ﻛﺎﺭﻫﺎﻱ‬
‫‪tr‬‬

‫ﺧﺎﺻﻲ ﻧﻴﺰ ﺍﺳﺘﻔﺎﺩﻩ ﻣﻲﺷﻮﺩ‪.‬‬


‫‪n‬‬

‫ﭼﮕﻮﻧﮕﻲ ﺍﺳﺘﻔﺎﺩﻩ ﻭ ﻧﺤﻮﻩ ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ ﻫﺮ ﻛﺪﺍﻡ ﺍﺯ ﺍﻳﻦ ﻛﺎﺭﺑﺮﺩﻫﺎ ﺩﺭ ﺩﺭﺱﻫﺎﻱ ﺁﻳﻨﺪﻩ‬ ‫ﻧﮑﺘﻪ‪:‬‬
‫‪o‬‬
‫‪.C‬‬

‫ﮔﻔﺘﻪ ﺧﻮﺍﻫﺪ ﺷﺪ‪ .‬ﺍﻳﻦ ﻛﺎﺭﺑﺮﺩﻫﺎ ﻭ ﭘﺎﻳﻪﻫﺎﻱ ﻣﺘﻨﺎﻇﺮ ﺁﻥﻫﺎ ﺩﺭ ﺟﺪﻭﻝ ﺯﻳﺮ ﺁﻣﺪﻩ ﺍﺳﺖ‪.‬‬
‫‪w‬‬

‫‪P3.0‬‬ ‫‪P3.1‬‬ ‫‪P3.2‬‬ ‫‪P3.3‬‬ ‫‪P3.4‬‬ ‫‪P3.5‬‬ ‫‪P3.6‬‬ ‫‪P3.7‬‬


‫‪w‬‬

‫‪RXD‬‬ ‫‪TXD‬‬ ‫‪INT0‬‬ ‫‪INT1‬‬ ‫‪T0‬‬ ‫‪T1‬‬ ‫‪WR‬‬ ‫‪RD‬‬


‫‪w‬‬

‫ﭘﺎﻳﻪ ‪ ٢١‬ﺗﺎ ‪:٢٨‬‬


‫ﺍﻳﻦ ﭘﺎﻳﻪﻫﺎ ﻣﺮﺑﻮﻁ ﺑﻪ ﭘﻮﺭﺕ ‪ ٢‬ﻣﻴﻜﺮﻭﻛﻨﺘﺮﻟﺮ ﻭ ﻣﺘﻨﺎﻇﺮ ﺑﺎ ﺑﺎﻳﺖ ‪ P2‬ﺍﺳﺖ‪.‬‬

‫ﭘﻮﺭﺕ ‪P2‬‬
‫ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش‬
‫اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ‬
‫ﻃﺮاﺣﯽ‪ ،‬ﺗﻮﻟﯿﺪ‪ ،‬اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ‬
‫آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ‬

‫‪P2.7‬‬ ‫‪P2.6‬‬ ‫‪P2.5‬‬ ‫‪P2.4‬‬ ‫‪P2.3‬‬ ‫‪P2.2‬‬ ‫‪P2.1‬‬ ‫‪P2.0‬‬


‫‪28‬‬ ‫‪27‬‬ ‫‪26‬‬ ‫‪25‬‬ ‫‪24‬‬ ‫‪23‬‬ ‫‪22‬‬ ‫‪21‬‬

‫‪r‬‬
‫ﭘﺎﻳﻪﻫﺎﻯ ‪ ٣٢‬ﺗﺎ ‪:٣٩‬‬

‫‪.i‬‬
‫ﺍﻳﻦ ﭘﺎﻳﻪﻫﺎ ﻣﺮﺑﻮﻁ ﺑﻪ ﭘﻮﺭﺕ ﺻﻔﺮ ﻭ ﻣﺘﻨﺎﻇﺮ ﺑﺎ ﺑﺎﻳﺖ ‪ P0‬ﺍﺳﺖ ﺍﻳﻦ ﭘﻮﺭﺕ ﺩﺭ ﻫﻨﮕﺎﻡ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ‬

‫‪s‬‬
‫‪r‬‬
‫‪ ROM‬ﻭ‪RAM‬ﺧﺎﺭﺟﻲ ﺑﻪ ﺻﻮﺭﺕ ﻣﺎﻟﺘﻲ ﭘﻠﻜﺲ ﺷﺪﻩ ﺗﺒﺪﻳﻞ ﻣﻲﺷﻮﺩ‪ .‬ﻭ ﺩﺭ ﺣﺎﻟﺖ ﻋﺎﺩﻱ‪ ،‬ﻣﺸﺎﺑﻪ‬

‫‪e‬‬
‫‪k‬‬
‫ﭘﻮﺭﺕ ﻳﻚ ﻋﻤﻞ ﻣﻲﻛﻨﺪ‪ .‬ﺩﺭ ﺣﺎﻟﺖ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ‪ ROM‬ﻭ‪RAM‬ﺧﺎﺭﺟﻲ ﺷﻤﺎ ﻣﻲﺗﻮﺍﻧﻴﺪ ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ‬

‫‪a‬‬
‫ﭘﺎﻳﻪﻱ ‪ ALE‬ﻭ ﺍﺗﺼﺎﻝ ﺁﻥ ﺑﻪ ﻳﻚ ‪ LATCH‬ﺁﻥ ﺭﺍ ﺟﺪﺍ ﺳﺎﺯﻳﺪ‪.‬‬
‫‪lM‬‬

‫*ﻣﺎ ﺩﺭ ﺑﺮﺩ ﺁﻣﻮﺯﺷﻲ ﺑﻪ ﺩﻟﻴﻞ ﻧﺪﺍﺷﺘﻦ ‪ RAM‬ﺧﺎﺭﺟﻲ ﻧﻴﺎﺯﻱ ﺑﻪ ﺩﻳﻤﺎﻟﺘﻲﭘﻠﻜﺲ ﻧﻤﻮﺩﻥ ﻧﺪﺍﺷﺘﻴﻢ‪،‬‬
‫‪o‬‬

‫ﺍﻟﺒﺘﻪ ﺑﺎﻳﺪ ﺗﻮﺟﻪ ﺩﺍﺷﺖ ﺍﻳﻦ ﭘﻮﺭﺕ ﻣﻲﺑﺎﻳﺴﺖ ﺑﺎ ﻣﻘﺎﻭﻣﺖﻫﺎﻱ ‪ ١٠‬ﻛﻴﻠﻮﺍﻫﻢ ﺑﻪ ‪ VCC‬ﻣﺘﺼﻞ ﺷﻮﻧﺪ)‬
‫‪tr‬‬

‫‪ PULL UP‬ﺷﻮﻧﺪ(‬
‫‪n‬‬
‫‪o‬‬

‫ﻣﺎ ﺩﺭ ﺑﺮﺩ ﺁﻣﻮﺯﺷﻲ ﺍﺯ ﻣﻘﺎﻭﻣﺖﻫﺎﻱ ﺑﺎﻻﻛﺶ ‪ ARRAY‬ﺍﺳﺘﻔﺎﺩﻩ ﻣﻲﻧﻤﺎﻳﻴﻢ ﻛﻪ ﺩﺭ ﺷﻜﻞ ﺯﻳﺮ‬


‫‪.C‬‬

‫ﺗﻮﺿﻴﺢ ﺩﺍﺩﻩ ﺷﺪﻩ ﺍﺳﺖ‪.‬‬


‫‪w‬‬

‫ﭘﻮﺭﺕ‪P0‬‬
‫‪w‬‬

‫‪P3.7‬‬ ‫‪P3.6‬‬ ‫‪P3.5‬‬ ‫‪P3.4‬‬ ‫‪P3.3‬‬ ‫‪P3.2‬‬ ‫‪P3.1‬‬ ‫‪P3.0‬‬


‫‪w‬‬

‫‪32‬‬ ‫‪33‬‬ ‫‪34‬‬ ‫‪35‬‬ ‫‪36‬‬ ‫‪37‬‬ ‫‪38‬‬ ‫‪39‬‬


‫ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش‬
‫اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ‬
‫ﻃﺮاﺣﯽ‪ ،‬ﺗﻮﻟﯿﺪ‪ ،‬اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ‬
‫آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ‬

‫‪r‬‬
‫‪.i‬‬
‫‪s‬‬
‫‪r‬‬
‫‪e‬‬
‫‪k‬‬
‫ﺗﺎ ﻛﻨﻮﻥ ‪ ٣٢‬ﭘﺎﻳﻪ ﺍﺯ ﻣﻴﻜﺮﻭ ﺭﺍ ﻛﻪ ﻣﺮﺑﻮﻁ ﺑﻪ ﭘﻮﺭﺕﻫﺎﻱ ﻣﻴﻜﺮﻭ ﻣﻲﺷﺪ ﺭﺍ ﻣﻮﺭﺩ ﺑﺮﺭﺳﻲ ﻗﺮﺍﺭ‬

‫‪a‬‬
‫ﺩﺍﺩﻳﻢ‪ .‬ﺣﺎﻝ ﺑﻪ ﭘﺎﻳﻪﻫﺎﻱ ﺩﻳﮕﺮ ﻣﻲﭘﺮﺩﺍﺯﻳﻢ‪.‬‬
‫‪lM‬‬

‫ﭘﺎﻳﻪ ‪:٩‬‬
‫‪o‬‬

‫ﺍﻳﻦ ﭘﺎﻳﻪ ﺑﺮﺍﻱ ‪ Reset‬ﻛﺮﺩﻥ ﻣﻴﻜﺮﻭﻛﻨﺘﺮﻟﺮ ﻣﻨﻈﻮﺭ ﺷﺪﻩ ﺍﺳﺖ ﺍﺯ ﺁﻧﺠﺎﻳﻲ ﻛﻪ ﻫﻴﭻ ﻣﻨﺒﻊ ﺗﻐﺬﻳﻪﺍﻱ‬
‫‪tr‬‬

‫ﻧﻤﻲﺗﻮﺍﻧﺪ ﺑﻪ ﺻﻮﺭﺕ ﺍﻳﺪﻩﺁﻝ ﻛﺎﺭ ﻛﻨﺪ ﻭ ﺑﻌﺪ ﺍﺯ ﺭﻭﺷﻦ ﻧﻤﻮﺩﻥ ﺯﻣﺎﻧﻲ ﻃﻮﻝ ﻛﺸﻴﺪﻩ ﺗﺎ ﺗﻐﺬﻳﻪ ﺭﮔﻮﻟﻪ ﺷﻮﺩ‬
‫‪n‬‬
‫‪o‬‬

‫ﻭ ﺗﺎﺯﻣﺎﻧﻲ ﻛﻪ ﺗﻐﺬﻳﻪ ﺛﺎﺑﺖ ﻧﺸﻮﺩ ﺗﻀﻤﻴﻨﻲ ﺩﺭ ﺻﺤﺖ ﺍﻧﺠﺎﻡ ﻛﺎﺭ ﻣﻴﻜﺮﻭﻛﻨﺘﺮﻟﺮ ﻧﻴﺴﺖ‪ .‬ﭘﺲ ﻣﻲﺗﻮﺍﻧﻴﻢ ﺑﺎ‬
‫‪.C‬‬

‫ﻃﺮﺍﺣﻲ ﻣﺪﺍﺭ ﺯﻳﺮ ﻣﺪﺗﻲ ﻣﻴﻜﺮﻭﻛﻨﺘﺮﻟﺮ ﺭﺍ‬


‫‪w‬‬

‫ﺩﺭ ﺣﺎﻟﺖ ‪ reset‬ﻧﮕﻪﺩﺍﺭﻳﻢ ﻭ ﺑﻌﺪ ﺍﺯ‬


‫‪w‬‬

‫ﺛﺎﺑﺖ ﺷﺪﻥ ﺗﻐﺬﻳﻪ ﺍﺯ ﺣﺎﻟﺖ ‪Reset‬‬


‫‪w‬‬

‫ﺧﺎﺭﺝ ﻣﻲﺷﻮﺩ‪ ،‬ﻣﺪﺕ ‪ Reset‬ﺷﺪﻥ‬

‫ﻣﻴﻜﺮﻭﻛﻨﺘﺮﻟﺮ ﺗﻮﺳﻂ ‪ R1‬ﻭ ‪ C1‬ﻣﺸﺨﺺ ﺷﺪﻩ ﺍﺳﺖ‪.‬‬

‫‪C1 = 10µF‬‬
‫‪R1 = 8.2 KΩ‬‬
‫ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش‬
‫اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ‬
‫ﻃﺮاﺣﯽ‪ ،‬ﺗﻮﻟﯿﺪ‪ ،‬اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ‬
‫آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ‬

‫‪R2 = 100 Ω‬‬

‫ﻣﺪار ﺑﺎﻻ ﻣﯽﺗﻮاﻧﺪ ﺑﻪ ﺻﻮرت دﺳﺘﯽ ﻧﯿﺰ ﻣﯿﮑﺮوﮐﻨﺘﺮﻟﺮ را ‪ Reset‬ﻧﻤﺎﯾﺪ‪.‬‬

‫‪r‬‬
‫‪.i‬‬
‫ﭘﺎﻳﻪﻫﺎﻯ ‪ ١٨‬ﻭ‪:١٩‬‬

‫‪s‬‬
‫ﺳﺮﻋﺖ ‪ CPU‬ﺩﺭ ﺍﻧﺠﺎﻡ ﻛﺎﺭ ﻳﻜﻲ ﺍﺯ ﻣﻬﻤﺘﺮﻳﻦ ﻧﻜﺘﻪﻫﺎﻱ ﻳﻚ ﭘﺮﻭﮊﻩ ﺍﺳﺖ ﺣﺎﻝ ﺍﻳﻦ ﺳﺮﻋﺖ‬

‫‪r‬‬
‫‪e‬‬
‫ﭼﮕﻮﻧﻪ ﻭ ﺍﺯ ﻛﺠﺎ ﻣﺤﺎﺳﺒﻪ ﻣﻲﺷﻮﺩ؟‬

‫‪k‬‬
‫ﭘﺎﻳﻪﻫﺎﻱ ‪ ١٨‬ﻭ‪ ١٩‬ﻛﻪ ﺩﺭ ﺷﻤﺎﺗﻴﻚ ﭘﺎﻳﻪﻫﺎ ﺑﻪ ﻧﺎﻡﻫﺎﻱ ‪ XTAL1 , XTAL2‬ﻧﻤﺎﻳﺶ ﺩﺍﺩﻩ ﺷﺪﻩﺍﻧﺪ‬

‫‪a‬‬
‫‪lM‬‬
‫‪1‬‬
‫ﺳﺮﻋﺖ ﻧﻮﺳﺎﻥ ﺳﺎﺯ ﻣﺘﺼﻞ ﺑﻪ ﭘﺎﻳﻪﻫﺎﻱ‬ ‫ﭘﺎﻳﻪﻫﺎﻱ ‪ CPU-Clock‬ﻣﻲﺑﺎﺷﻨﺪ‪ .‬ﺳﺮﻋﺖ ‪ CPU‬ﻫﻤﻮﺍﺭﻩ‬
‫‪12‬‬
‫‪o‬‬

‫‪ ١٨‬ﻭ ‪ ١٩‬ﺍﺳﺖ ﻛﻪ ﺑﻪ ﺻﻮﺭﺕ ﺯﻳﺮ ﻣﺘﺼﻞ ﻣﻲﺷﻮﻧﺪ‪.‬‬


‫‪tr‬‬

‫ﺣﺪﺍﻛﺜﺮ ﻓﺮﻛﺎﻧﺲ ﻧﻮﺳﺎﻥﺳﺎﺯ ﻛﻪ ﻣﻲﺗﻮﺍﻧﺪ ﺑﻪ ﻣﻴﻜﺮﻭﻛﻨﺘﺮﻟﺮ ﻣﺘﺼﻞ ﺷﻮﺩ ﻛﺮﻳﺴﺘﺎﻝ ‪24MHz‬‬ ‫ﻧﮑﺘﻪ‪:‬‬
‫‪n‬‬

‫ﻣﻲﺑﺎﺷﺪ ﻛﻪ ﺩﺭ ﺍﻳﻦ ﺻﻮﺭﺕ ﺳﺮﻋﺖ ‪ CPU‬ﺑﺮﺍﺑﺮ ‪ 2MHz‬ﺍﺳﺖ‪ .‬ﺍﻳﻦ ﺑﺪﻳﻦ ﻣﻌﻨﺎﺳﺖ ﻛﻪ ‪ CPU‬ﻗﺎﺩﺭ‬
‫‪o‬‬
‫‪.C‬‬

‫ﺧﻮﺍﻫﺪ ﺑﻮﺩ ﺩﺭ ‪ ١‬ﺛﺎﻧﻴﻪ ﺩﻭ ﻣﻴﻠﻴﻮﻥ ﻭﺍﺣﺪ ﻛﺎﺭﻱ ﺭﺍ ﺍﻧﺠﺎﻡ ﺩﻫﺪ‪ .‬ﺍﺯ ﺍﻳﻦ ﭘﺲ ﺑﻪ ﻫﺮ ﻭﺍﺣﺪ ﻛﺎﺭﻱ ﻳﻚ‬
‫‪w‬‬

‫ﺳﻴﻜﻞ ﻣﺎﺷﻴﻦ ﮔﻔﺘﻪ ﻣﻲﺷﻮﺩ‪ .‬ﻻﺯﻡ ﺑﻪ ﺫﻛﺮ ﺍﺳﺖ ﺯﻣﺎﻥ ﻫﺮ ﺳﻴﻜﻞ ﺍﺯ ﻓﺮﻣﻮﻝ ﺯﻳﺮ ﻣﺤﺎﺳﺒﻪ ﻣﻲﺷﻮﺩ‪.‬‬
‫‪w‬‬

‫‪1s‬‬
‫ﺳﺮﻋﺖ ﻫﺮ ﺳﻴﻜﻞ ﻣﺎﺷﻴﻦ =‬
‫‪XTAL / 12‬‬
‫‪w‬‬

‫‪C 1 = C 2 = 30 pF ± % 10‬‬
‫ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش‬
‫اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ‬
‫ﻃﺮاﺣﯽ‪ ،‬ﺗﻮﻟﯿﺪ‪ ،‬اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ‬
‫آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ‬

‫ﺑﺎ ﻗﺮﺍﺭ ﺩﺍﺩﻥ ﻣﺘﻐﻴﺮﻫﺎ ﺩﺭ ﺍﻳﻦ ﻓﺮﻣﻮﻝ ﺩﺭﻣﻲﻳﺎﺑﻴﻢ ﻛﻪ ﺑﺎ ﻳﻚ ﻛﺮﻳﺴﺘﺎﻝ ‪ ٢٤‬ﻣﮕﺎﻫﺮﺗﺰ ﺳﺮﻋﺖ ﻫﺮ‬

‫ﺳﻴﻜﻞ ﻣﺎﺷﻴﻦ ﺑﺮﺍﺑﺮ ﺑﺎ ‪ ٥٠٠‬ﻧﺎﻧﻮﺛﺎﻧﻴﻪ ﻣﻲﺑﺎﺷﺪ‪.‬‬

‫‪r‬‬
‫‪.i‬‬
‫ﺍﺯ ﺍﻳﻦ ﺑﻪ ﺑﻌﺪ ﻛﺮﻳﺴﺘﺎﻝ ﺭﺍ ﺑﻪ ﺻﻮﺭﺕ ﻗﺮﺍﺭﺩﺍﺩﻱ ﻭ ﺑﺮ ﺍﺳﺎﺱ ﻛﺮﻳﺴﺘﺎﻝ ﺑﺮﺩ ﺁﻣﻮﺯﺷﻲ ‪١٢‬‬ ‫ﻧﮑﺘﻪ‪:‬‬

‫‪s‬‬
‫ﻣﮕﺎﻫﺮﺗﺰ ﺩﺭ ﻧﻈﺮ ﻣﻲﮔﻴﺮﻳﻢ‪.‬‬

‫‪r‬‬
‫‪e‬‬
‫ﺗﻮﺟﻪ داﺷﺘﻪ ﺑﺎﺷﯿﺪ ﮐﻪ ﻫﺮ دﺳﺘﻮری در ﯾﮏ ﺳﯿﮑﻞ ﻣﺎﺷﯿﻦ اﺟﺮا ﻧﻤﯽﺷﻮد و ﺑﺴﺘﻪ ﺑﻪ ﻧﻮع‬

‫‪k‬‬
‫‪a‬‬
‫دﺳﺘﻮر‪ ،‬ﺗﻌﺪاد ﺳﯿﮑﻞ ﻣﺸﺨﺺ ﻣﯽﺷﻮد‪.‬‬
‫‪lM‬‬

‫ﭘﺎﻳﻪ ‪:٢٩‬‬
‫‪o‬‬

‫ﺍﻳﻦ ﭘﺎﻳﻪ ﺟﻬﺖ ﺍﺗﺼﺎﻝ ﺑﻪ ‪ OE‬ﺍﺯ ‪ EEPROM‬ﺧﺎﺭﺟﻲ ﻣﻲﺑﺎﺷﺪ ﻭ ﺩﺭ ﺣﺎﻟﺖ ﻋﺎﺩﻱ ﺍﺳﺘﻔﺎﺩﻩ‬
‫‪tr‬‬

‫ﻧﻤﻲﺷﻮﺩ‪.‬‬
‫‪n‬‬

‫ﭘﺎﻳﻪ ‪:٣٠‬‬
‫‪o‬‬
‫‪.C‬‬

‫‪ :ALE‬ﺍﻳﻦ ﭘﺎﻳﻪ ﺟﻬﺖ ﺩﻳﻤﺎﻟﺘﻲ ﭘﻠﻜﺲ ﻧﻤﻮﺩﻥ ﭘﻮﺭﺕ ﺻﻔﺮ ﺩﺭ ﻫﻨﮕﺎﻡ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ‪ ROM‬ﻭ‬
‫‪w‬‬

‫‪RAM‬ﺧﺎﺭﺟﻲ ﺑﻪ ﻛﺎﺭ ﻣﻲﺭﻭﺩ‪.‬‬


‫‪w‬‬

‫ﭘﺎﻳﻪ ‪:٣١‬‬
‫‪w‬‬

‫ﺑﺮﺍﻱ ﺩﺳﺘﺮﺳﻲ ﺑﻪ ﺣﺎﻓﻈﻪ ﺑﺮﻧﺎﻣﻪ ﺧﺎﺭﺟﻲ ﺍﺳﺖ ﻣﺎ ﺩﺭ‪ 89C51‬ﻣﻌﻤﻮ ﹰﻻ ﺑﻪ ﻋﻠﺖ ﻭﺟﻮﺩ‬

‫‪ EEPROM‬ﺩﺍﺧﻠﻲ ﻧﻴﺎﺯﻱ ﺑﻪ ﺣﺎﻓﻈﻪ ﺧﺎﺭﺟﻲ ﻧﺪﺍﺭﻳﻢ ﭘﺲ ﺍﻳﻦ ﭘﺎﻳﻪ ﺩﺭ ﺣﺎﻟﺖ ﻋﺎﺩﻱ ﺑﻪ ‪ VCC‬ﻣﺘﺼﻞ‬

‫ﺍﺳﺖ‪.‬‬
‫ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش‬
‫اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ‬
‫ﻃﺮاﺣﯽ‪ ،‬ﺗﻮﻟﯿﺪ‪ ،‬اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ‬
‫آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ‬

‫ﭘﺎﻳﻪﻫﺎﻯ ‪ ٢٠‬ﻭ‪:٤٠‬‬
‫ﺩﻭ ﭘﺎﻳﻪ ﻣﻬﻢ ﻣﻴﻜﺮﻭﻛﻨﺘﺮﻟﺮ ﺍﺳﺖ ﻛﻪ ﺟﻬﺖ ﺍﺗﺼﺎﻝ ﺑﻪ ‪ VCC,GND‬ﻣﻲﺗﻮﺍﻥ ﻃﺒﻖ ﭘﻴﻮﺳﺖ ﺍﺯ‬

‫‪r‬‬
‫ﺁﻥﻫﺎ ﺍﺳﺘﻔﺎﺩﻩ ﻛﺮﺩ‪.‬‬

‫‪.i‬‬
‫‪s‬‬
‫ﺧﺼﻮﺻﻴﺎﺕ ﻣﻴﮑﺮﻭﮐﻨﺘﺮﻟﺮﻫﺎﻯ‪ ٨٠٥١‬ﻭ ‪:٨٠٥٢‬‬

‫‪r‬‬
‫ﺩﺭ ﺟﺪﻭﻝ ﺯﻳﺮ ﺍﻳﻦ ﺩﻭ ﻣﻴﻜﺮﻭﻛﻨﺘﺮﻟﺮ ﺍﺯ ﻧﻈﺮ ﺣﺎﻓﻈﻪ ﺑﺎ ﻳﻜﺪﻳﮕﺮ ﻣﻘﺎﻳﺴﻪ ﺷﺪﻩﺍﻧﺪ‪.‬‬

‫‪e‬‬
‫‪k‬‬
‫ﻣﻴﻜﺮﻭﻛﻨﺘﺮﻟﺮ‬ ‫ﺣﺎﻓﻈﻪ‪ROM‬‬ ‫‪ ROM‬ﺩﺍﺧﻠﻲ‬ ‫‪ ROM‬ﺧﺎﺭﺟﻲ‬ ‫ﺗﻌﺪﺍﺩ ﺗﺎﻳﻤﺮ‬

‫‪a‬‬
‫‪8051‬‬ ‫‪128‬ﺑﺎﻳﺖ‬ ‫‪4K‬ﺑﺎﻳﺖ‬ ‫‪64K‬ﺑﺎﻳﺖ‬ ‫‪2‬‬
‫‪lM‬‬

‫‪8052‬‬ ‫‪256‬ﺑﺎﻳﺖ‬ ‫‪8K‬ﺑﺎﻳﺖ‬ ‫‪128K‬ﺑﺎﻳﺖ‬ ‫‪3‬‬


‫‪o‬‬
‫‪tr‬‬

‫ﻧﮑﺘﻪ‪ :‬ﺩﺭﻗﺴﻤﺖ‪ ROM‬ﺧﺎﺭﺟﻲ ﻣﻨﻈﻮﺭ ﻗﺎﺑﻠﻴﺖ ﭘﺸﺘﻴﺒﺎﻧﻲ ﺍﺯ ﺍﻳﻦ ﻣﻘﺪﺍﺭ ﺣﺎﻓﻈﻪ ﺧﺎﺭﺟﻲ ﺍﺳﺖ‪.‬‬
‫‪n‬‬

‫ﻣﺮﻭﺭﻯ ﺑﺮ‪RAM‬ﻫﻤﻪ ﻣﻨﻈﻮﺭﻩ‪:‬‬


‫‪o‬‬
‫‪.C‬‬

‫‪RAM‬ﻣﻴﻜﺮﻭﻛﻨﺘﺮﻟﺮ ﺑﻪ ﻗﺴﻤﺖﻫﺎﻱ ﻣﺨﺘﻠﻔﻲ ﺗﻘﺴﻴﻢ ﺑﻨﺪﻱ ﻣﻲﺷﻮﺩ‪.‬‬


‫‪w‬‬

‫ﺍﻟﻒ( ﺑﺎﻧﻚﻫﺎﻱ ﺛﺒﺎﺕ‬


‫‪w‬‬

‫ﺏ( ‪ RAM‬ﺑﻴﺖ ﺁﺩﺭﺱ ﭘﺬﻳﺮ‬


‫‪w‬‬

‫ﺝ( ﺣﺎﻓﻈﻪ‪RAM‬ﻫﻤﻪ ﻣﻨﻈﻮﺭﻩ‬

‫ﺩ( ﺛﺒﺎﺕﻫﺎﻱ ﻭﻳﮋﻩ‬

‫ﺁﺩﺭﺱ‬ ‫ﺁﺩﺭﺱ ﺑﻴﺖ‬ ‫ﺁﺩﺭﺱ‬ ‫ﺁﺩﺭﺱ ﺑﻴﺖ‬


‫ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش‬
‫اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ‬
‫ﻃﺮاﺣﯽ‪ ،‬ﺗﻮﻟﯿﺪ‪ ،‬اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ‬
‫آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ‬

‫ﺑﺎﻳﺖ‬ ‫ﺑﺎﻳﺖ‬

‫‪7F‬‬ ‫‪FF‬‬
‫‪F0‬‬ ‫‪F7‬‬ ‫‪F6‬‬ ‫‪F5‬‬ ‫‪F4‬‬ ‫‪F3‬‬ ‫‪F2‬‬ ‫‪F1‬‬ ‫‪F0‬‬ ‫‪B‬‬

‫‪r‬‬
‫‪.i‬‬
‫ﺣﺎﻓﻈﻪ ‪ RAM‬ﻫﻤﻪ ﻣﻨﻈﻮﺭﻩ‬ ‫‪E0‬‬ ‫‪E7‬‬ ‫‪E6‬‬ ‫‪E5‬‬ ‫‪E4‬‬ ‫‪E3‬‬ ‫‪E2‬‬ ‫‪E1‬‬ ‫‪E0‬‬ ‫‪ACC‬‬

‫‪s‬‬
‫‪r‬‬
‫‪D0‬‬ ‫‪D7‬‬ ‫‪D6‬‬ ‫‪D5‬‬ ‫‪D4‬‬ ‫‪D3‬‬ ‫‪D2‬‬ ‫‪D1‬‬ ‫‪D0‬‬ ‫‪PSW‬‬

‫‪e‬‬
‫‪30‬‬ ‫‪B8‬‬ ‫‪----‬‬ ‫‪----‬‬ ‫‪----‬‬ ‫‪BC‬‬ ‫‪BB‬‬ ‫‪BA‬‬ ‫‪B9‬‬ ‫‪B8‬‬ ‫‪IP‬‬

‫‪k‬‬
‫‪2F‬‬ ‫‪7F‬‬ ‫‪7E‬‬ ‫‪7D‬‬ ‫‪7C‬‬ ‫‪7B‬‬ ‫‪7A‬‬ ‫‪79‬‬ ‫‪78‬‬

‫‪a‬‬
‫‪2E‬‬ ‫‪77‬‬ ‫‪76‬‬ ‫‪75‬‬ ‫‪74‬‬ ‫‪73‬‬ ‫‪72‬‬ ‫‪71‬‬ ‫‪70‬‬ ‫‪B0‬‬ ‫‪B7‬‬ ‫‪B6‬‬ ‫‪B5‬‬ ‫‪B4‬‬ ‫‪B3‬‬ ‫‪B2‬‬ ‫‪B1‬‬ ‫‪B0‬‬ ‫‪P3‬‬
‫‪lM‬‬
‫‪2D‬‬ ‫‪6F‬‬ ‫‪6E‬‬ ‫‪6D‬‬ ‫‪6C‬‬ ‫‪6B‬‬ ‫‪6A‬‬ ‫‪69‬‬ ‫‪68‬‬
‫‪2C‬‬ ‫‪67‬‬ ‫‪66‬‬ ‫‪65‬‬ ‫‪64‬‬ ‫‪63‬‬ ‫‪62‬‬ ‫‪61‬‬ ‫‪60‬‬ ‫‪A8‬‬ ‫‪AF‬‬ ‫‪----‬‬ ‫‪----‬‬ ‫‪AC‬‬ ‫‪AB‬‬ ‫‪AA‬‬ ‫‪A9‬‬ ‫‪A8‬‬ ‫‪IE‬‬
‫‪2B‬‬ ‫‪5F‬‬ ‫‪5E‬‬ ‫‪5D‬‬ ‫‪5C‬‬ ‫‪5B‬‬ ‫‪5A‬‬ ‫‪59‬‬ ‫‪58‬‬
‫‪o‬‬

‫‪2A‬‬ ‫‪57‬‬ ‫‪56‬‬ ‫‪55‬‬ ‫‪54‬‬ ‫‪53‬‬ ‫‪52‬‬ ‫‪51‬‬ ‫‪50‬‬ ‫‪A0‬‬ ‫‪A7‬‬ ‫‪A6‬‬ ‫‪A5‬‬ ‫‪A4‬‬ ‫‪A3‬‬ ‫‪A2‬‬ ‫‪A1‬‬ ‫‪A0‬‬ ‫‪P2‬‬
‫‪tr‬‬

‫‪29‬‬ ‫‪4F‬‬ ‫‪4E‬‬ ‫‪4D‬‬ ‫‪4C‬‬ ‫‪4B‬‬ ‫‪4A‬‬ ‫‪49‬‬ ‫‪48‬‬

‫‪28‬‬ ‫‪47‬‬ ‫‪46‬‬ ‫‪45‬‬ ‫‪44‬‬ ‫‪43‬‬ ‫‪42‬‬ ‫‪41‬‬ ‫‪40‬‬ ‫ﺑﻴﺖ ﺁﺩﺭﺱ ﭘﺬﻳﺮ ﻧﻴﺴﺖ‬ ‫‪SBUF‬‬
‫‪n‬‬

‫‪27‬‬ ‫‪3F‬‬ ‫‪3E‬‬ ‫‪3D‬‬ ‫‪3C‬‬ ‫‪3B‬‬ ‫‪3A‬‬ ‫‪39‬‬ ‫‪38‬‬ ‫‪98‬‬ ‫‪9F‬‬ ‫‪9E‬‬ ‫‪9D‬‬ ‫‪9C‬‬ ‫‪9B‬‬ ‫‪9A‬‬ ‫‪99‬‬ ‫‪98‬‬ ‫‪SCON‬‬
‫‪o‬‬

‫‪26‬‬ ‫‪37‬‬ ‫‪36‬‬ ‫‪35‬‬ ‫‪34‬‬ ‫‪33‬‬ ‫‪32‬‬ ‫‪31‬‬ ‫‪30‬‬


‫‪.C‬‬

‫‪25‬‬ ‫‪2F‬‬ ‫‪2E‬‬ ‫‪2D‬‬ ‫‪2C‬‬ ‫‪2B‬‬ ‫‪2A‬‬ ‫‪29‬‬ ‫‪28‬‬ ‫‪90‬‬ ‫‪97‬‬ ‫‪96‬‬ ‫‪95‬‬ ‫‪94‬‬ ‫‪93‬‬ ‫‪92‬‬ ‫‪91‬‬ ‫‪90‬‬ ‫‪P1‬‬
‫‪24‬‬ ‫‪27‬‬ ‫‪26‬‬ ‫‪25‬‬ ‫‪24‬‬ ‫‪23‬‬ ‫‪22‬‬ ‫‪21‬‬ ‫‪20‬‬
‫‪w‬‬

‫‪23‬‬ ‫‪1F‬‬ ‫‪1E‬‬ ‫‪1D‬‬ ‫‪1C‬‬ ‫‪1B‬‬ ‫‪1A‬‬ ‫‪19‬‬ ‫‪18‬‬ ‫‪8D‬‬ ‫ﺑﻴﺖ ﺁﺩﺭﺱ ﭘﺬﻳﺮ ﻧﻴﺴﺖ‬ ‫‪TH1‬‬

‫‪22‬‬ ‫‪17‬‬ ‫‪16‬‬ ‫‪15‬‬ ‫‪14‬‬ ‫‪13‬‬ ‫‪12‬‬ ‫‪11‬‬ ‫‪10‬‬ ‫‪8C‬‬ ‫ﺑﻴﺖ ﺁﺩﺭﺱ ﭘﺬﻳﺮ ﻧﻴﺴﺖ‬ ‫‪TH0‬‬
‫‪w‬‬

‫‪21‬‬ ‫‪0F‬‬ ‫‪0E‬‬ ‫‪0D‬‬ ‫‪0C‬‬ ‫‪0B‬‬ ‫‪0A‬‬ ‫‪09‬‬ ‫‪08‬‬ ‫‪8B‬‬ ‫ﺑﻴﺖ ﺁﺩﺭﺱ ﭘﺬﻳﺮ ﻧﻴﺴﺖ‬ ‫‪TL1‬‬
‫‪w‬‬

‫‪20‬‬ ‫‪07‬‬ ‫‪06‬‬ ‫‪05‬‬ ‫‪04‬‬ ‫‪03‬‬ ‫‪02‬‬ ‫‪01‬‬ ‫‪00‬‬ ‫‪8A‬‬ ‫ﺑﻴﺖ ﺁﺩﺭﺱ ﭘﺬﻳﺮ ﻧﻴﺴﺖ‬ ‫‪TL0‬‬

‫‪1F‬‬ ‫‪89‬‬ ‫ﺑﻴﺖ ﺁﺩﺭﺱ ﭘﺬﻳﺮ ﻧﻴﺴﺖ‬ ‫‪TMOD‬‬


‫ﺑﺎﻧﻚ ‪٣‬‬
‫‪18‬‬ ‫‪88‬‬ ‫‪8F‬‬ ‫‪8E‬‬ ‫‪8D‬‬ ‫‪8C‬‬ ‫‪8B‬‬ ‫‪8A‬‬ ‫‪89‬‬ ‫‪88‬‬ ‫‪TCON‬‬

‫‪17‬‬ ‫‪87‬‬ ‫ﺑﻴﺖ ﺁﺩﺭﺱ ﭘﺬﻳﺮﻧﻴﺴﺖ‬ ‫‪PCON‬‬


‫ﺑﺎﻧﻚ ‪٢‬‬
‫‪10‬‬
‫ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش‬
‫اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ‬
‫ﻃﺮاﺣﯽ‪ ،‬ﺗﻮﻟﯿﺪ‪ ،‬اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ‬
‫آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ‬

‫‪0F‬‬ ‫‪83‬‬ ‫ﺑﻴﺖ ﺁﺩﺭﺱ ﭘﺬﻳﺮ ﻧﻴﺴﺖ‬ ‫‪DPH‬‬


‫ﺑﺎﻧﻚ ‪١‬‬
‫‪08‬‬ ‫‪82‬‬ ‫ﺑﻴﺖ ﺁﺩﺭﺱ ﭘﺬﻳﺮ ﻧﻴﺴﺖ‬ ‫‪DPL‬‬

‫‪r‬‬
‫‪07‬‬ ‫‪81‬‬ ‫ﺑﻴﺖ ﺁﺩﺭﺱ ﭘﺬﻳﺮ ﻧﻴﺴﺖ‬ ‫‪SP‬‬
‫‪R0-R7‬ﺑﺎﻧﻚ ﻗﺮﺍﺭﺩﺍﺩﻱ ﺛﺒﺎﺕ ﺑﺮﺍﻱ‬

‫‪.i‬‬
‫‪00‬‬ ‫‪80‬‬ ‫‪87‬‬ ‫‪86‬‬ ‫‪85‬‬ ‫‪84‬‬ ‫‪83‬‬ ‫‪82‬‬ ‫‪81‬‬ ‫‪80‬‬ ‫‪P0‬‬

‫‪s‬‬
‫ﺛﺒﺎﺗﻬﺎﻱ ﻭﻳﮋﻩ‬

‫‪r‬‬
‫ﺧﻼﺻﻪ ﺣﺎﻓﻈﻪ ﺩﺭﻭﻥ ﺗﺮﺍﺷﻪ ‪٨٠٥١‬‬

‫‪e‬‬
‫‪k‬‬
‫ﺗﻮﺟﻪ ﺩﺍﺷﺘﻪ ﺑﺎﺷﻴﺪ ﺧﺎﻧﻪ ﻫﺎﻱ ﺣﺎﻓﻈﻪ ﺍﺯ ﻧﻈﺮ ﻧﻮﻉ ﺩﺳﺘﺮﺳﻲ ﺑﻪ ‪ ٢‬ﺩﺳﺘﻪ ﺩﺳﺘﺮﺳﻲ ﺑﻴﺘﻲ ﻭ‬

‫‪a‬‬
‫‪lM‬‬
‫ﺩﺳﺘﺮﺳﻲ ﺑﺎﻳﺘﻲ ﺗﻘﺴﻴﻢ ﻣﻲﺷﻮﻧﺪ‪ .‬ﺗﻤﺎﻡ ﺑﺎﻳﺖﻫﺎﻱ ﺣﺎﻓﻈﻪ ﺑﻪ ﺻﻮﺭﺕ ﺑﻴﺘﻲ ﻗﺎﺑﻞ ﺩﺳﺘﺮﺳﻲ ﻧﻴﺴﺘﻨﺪ ﺑﻪ‬

‫ﻋﻨﻮﺍﻥ ﻣﺜﺎﻝ ﺑﺎﻳﺘﻲ ﺑﻪ ﻧﺎﻡ ‪ P1‬ﻭﺟﻮﺩ ﺩﺍﺭﺩ ﻛﻪ ﻣﻲﺗﻮﺍﻧﻴﻢ ﺑﮕﻮﻳﻴﻢ ﺑﻴﺖ ﺻﻔﺮﻡ ﺑﺎﻳﺖ ‪ .(P1.0)P1‬ﺍﻣﺎ‬
‫‪o‬‬
‫‪tr‬‬

‫ﻧﻤﻲﺗﻮﺍﻧﻴﻢ ﺑﮕﻮﻳﻴﻢ ﺑﻴﺖ ﺻﻔﺮﻡ ﺑﺎﻳﺖ ‪ TMOD‬ﺯﻳﺮﺍ ‪ TMOD‬ﻳﻚ ﺑﺎﻳﺖ ﺑﻴﺖ ﺁﺩﺭﺱ ﭘﺬﻳﺮ ﻧﻴﺴﺖ‬
‫‪n‬‬

‫ﺷﻤﺎ ﻣﻲﺗﻮﺍﻧﻴﺪ ﺩﺭ ﺟﺪﻭﻝ ﺧﺎﻧﻪﻫﺎﻱ ﺣﺎﻓﻈﻪ ﻟﻴﺴﺖ ﻛﺎﻣﻠﻲ ﺍﺯ ﺑﺎﻳﺖﻫﺎﻱ ﺑﻴﺖ ﺁﺩﺭﺱ ﭘﺬﻳﺮ ﺭﺍ ﻣﺸﺎﻫﺪﻩ‬
‫‪o‬‬

‫ﻧﻤﺎﻳﻴﺪ‪ .‬ﺍﻟﺒﺘﻪ ﺑﻪ ﺍﻳﻦ ﻧﻜﺘﻪ ﺗﻮﺟﻪ ﺩﺍﺷﺘﻪ ﺑﺎﺷﻴﺪ ﻛﻪ ﺍﺯ ﺑﺎﻳﺖﻫﺎﻱ ﺑﻴﺖ ﺁﺩﺭﺱﭘﺬﻳﺮ ﻣﻲﺗﻮﺍﻥ ﺑﺮﺍﻱ ﻛﺎﺭﻫﺎﻱ‬
‫‪.C‬‬

‫ﺑﺎﻳﺘﻲ ﻣﻌﻤﻮﻟﻲ ﻧﻴﺰ ﺍﺳﺘﻔﺎﺩﻩ ﻛﺮﺩ‪.‬‬


‫‪w‬‬

‫ﺑﺎﻧﮏﻫﺎﻯ ﺛﺒﺎﺕ‪:‬‬
‫‪w‬‬

‫‪.‬‬
‫ﺍﺯ ﺁﺩﺭﺱ‪ 00H‬ﺗﺎ ‪ 1F H‬ﺣﺎﻓﻈﻪ ﺑﻪ ﺍﻳﻦ ﺑﺎﻧﻚﻫﺎ ﺍﺧﺘﺼﺎﺹ ﺩﺍﺩﻩ ﺷﺪﻩ ﺍﺳﺖ ﻛﻪ ﺩﺭ ﻣﺠﻤﻮﻉ ‪۴‬‬
‫‪w‬‬

‫ﺑﺎﻧﻚ ﺑﻪ ﺍﺳﺎﻣﻲ )ﺑﺎﻧﻚ ﺻﻔﺮ‪ ،‬ﺑﺎﻧﻚ ﻳﻚ‪ ،‬ﺑﺎﻧﻚ ﺩﻭ‪ ،‬ﺑﺎﻧﻚ ﺳﻪ‪ (،‬ﻭﺟﻮﺩ ﺩﺍﺭﺩ‪ .‬ﻫﺮ ﻛﺪﺍﻡ ﺍﺯ ﺍﻳﻦ ﺑﺎﻧﻚﻫﺎ ﺍﺯ‬

‫ﻫﺸﺖ ﺑﺎﻳﺖ ﺗﺸﻜﻴﻞ ﺷﺪﻩ ﺍﺳﺖ ﻛﻪ ﺑﻪ ﺍﺳﺎﻣﻲ ‪ R0‬ﺗﺎ ‪ R7‬ﻧﺎﻣﮕﺬﺍﺭﻱ ﺷﺪﻩﺍﻧﺪ‪ .‬ﻭ ﻣﺎ ﻣﻲﺗﻮﺍﻧﻴﻢ ﺑﻪ ﺩﻟﺨﻮﺍﻩ‬
‫ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش‬
‫اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ‬
‫ﻃﺮاﺣﯽ‪ ،‬ﺗﻮﻟﯿﺪ‪ ،‬اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ‬
‫آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ‬

‫ﻫﺮ ﻛﺪﺍﻡ ﺍﺯ ﺍﻳﻦ ﺑﺎﻧﻚﻫﺎ ﺭﺍ ﺍﻧﺘﺨﺎﺏ ﻛﻨﻴﻢ‪ .‬ﺍﻣﻜﺎﻥ ﺩﺳﺘﺮﺳﻲ ﺑﻪ ﺍﻳﻦ ﺑﺎﻧﻚﻫﺎ ﺑﻪ ﺻﻮﺭﺕ ﺑﺎﻳﺘﻲ ﺍﺳﺖ ﻭ ﺑﻴﺖ‬

‫ﺁﺩﺭﺱﭘﺬﻳﺮ ﻧﻴﺴﺖ‪.‬‬

‫‪r‬‬
‫‪.i‬‬
‫ﺷﺎﻳﺪ ﺍﺯ ﺧﻮﺩ ﺳﻮﺍﻝ ﻛﻨﻴﺪ ﻛﻪ ﺩﺳﺘﺮﺳﻲ ﺑﺎﻳﺘﻲ ﺑﻪ ﭼﻪ ﻣﻌﻨﺎﺳﺖ‪ .‬ﺩﺳﺘﺮﺳﻲ ﺑﺎﻳﺘﻲ ﻳﻌﻨﻲ ﺍﻳﻨﻜﻪ ﺑﺮﺍﻱ‬

‫‪s‬‬
‫ﺍﻧﺘﻘﺎﻝ ﺍﻃﻼﻋﺎﺕ ﺑﻪ ﺍﻳﻦ ﺛﺒﺎﺕﻫﺎ ﺑﺎﻳﺪ ﺍﺯ ﺩﺳﺘﻮﺭﺍﺕ ﺑﺎﻳﺘﻲ ﺍﺳﺘﻔﺎﺩﻩ ﻛﺮﺩ‪ .‬ﻭ ﺍﺯ ﺩﺳﺘﻮﺭﺍﺕ ﺑﻴﺘﻲ ﺑﺮﺍﻱ ﺗﺤﺖ‬

‫‪r‬‬
‫‪e‬‬
‫ﺗﺎﺛﻴﺮ ﻗﺮﺍﺭ ﺩﺍﺩﻥ ﺗﻨﻬﺎ ﻳﻚ ﺑﻴﺖ ﻣﻲﺗﻮﺍﻥ ﺍﺳﺘﻔﺎﺩﻩ ﻛﺮﺩ‪ .‬ﺑﻪ ﺑﻴﺎﻥ ﺳﺎﺩﻩﺗﺮ ﻧﻤﻲﺗﻮﺍﻧﻴﻢ ﻣﺴﺘﻘﻴﻤﹰﺎ ﻳﻚ ﺑﻴﺖ ﺍﺯ‬

‫‪k‬‬
‫‪a‬‬
‫ﻳﻚ ﺑﺎﻳﺖ ﺭﺍ ﺗﻐﻴﻴﺮ ﺩﻫﻴﻢ ﻭ ﺑﺮﺍﻱ ﺗﻐﻴﻴﺮ ﻳﻚ ﺑﻴﺖ ﺑﺎﻳﺪ ﻛﻞ ﻳﻚ ﺑﺎﻳﺖ ﺭﺍ ﺗﺤﺖ ﺗﺎﺛﻴﺮ ﻗﺮﺍﺭ ﺩﻫﻴﻢ‪.‬‬
‫‪lM‬‬
‫ﺩﺳﺘﻮﺭﺍﺗﻲ ﻛﻪ ﺍﺯ ﺍﻳﻦ ﺛﺒﺎﺕﻫﺎ ﺍﺳﺘﻔﺎﺩﻩ ﻣﻲﻛﻨﻨﺪ ﺍﺯ ﺩﺳﺘﻮﺭﺍﻟﻌﻤﻞﻫﺎﻳﻲ ﻫﺴﺘﻨﺪ ﻛﻪ ﺑﺎ ﺑﻘﻴﻪ ﺭﻭﺵﻫﺎﻱ‬

‫ﺁﺩﺭﺱﺩﻫﻲ ﻛﺎﺭ ﻣﻲﻛﻨﻨﺪ‪ ،‬ﺳﺮﻳﻌﺘﺮ ﻭ ﻛﻮﺗﺎﻩﺗﺮ ﻫﺴﺘﻨﺪ ﭘﺲ ﺑﻬﺘﺮ ﺍﺳﺖ ﺑﺮﺍﻱ ﺩﺍﺩﻩﻫﺎﻳﻲ ﻛﻪ ﺑﻴﺸﺘﺮ ﺑﻪﻛﺎﺭ ﺑﺮﺩﻩ‬
‫‪o‬‬
‫‪tr‬‬

‫ﻣﻲﺷﻮﻧﺪ ﺍﺯ ﺍﻳﻦ ﺛﺒﺎﺕﻫﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺷﻮﺩ‪.‬‬


‫‪n‬‬
‫‪o‬‬

‫‪RAM‬ﺑﻴﺖ ﺁﺩﺭﺱﭘﺬﻳﺮ‪:‬‬
‫‪.C‬‬

‫ﺍﺯ ﺁﺩﺭﺱ ‪20H‬ﺗﺎ ‪ 2FH‬ﺛﺒﺎﺕﻫﺎﻳﻲ ﻗﺮﺍﺭ ﺩﺍﺭﻧﺪ ﻛﻪ ﺩﺳﺘﺮﺳﻲ ﺑﻪ ﺁﻥﻫﺎ ﺑﻪ ﺻﻮﺭﺕ ﺑﻴﺘﻲ ﺍﻧﺠﺎﻡ‬
‫‪w‬‬

‫ﻣﻲﺷﻮﺩ ﻳﻌﻨﻲ ﺍﻳﻨﻜﻪ ﺩﺭ ﺍﻳﻦ ﺛﺒﺎﺕﻫﺎ ﻋﻼﻭﻩ ﺑﺮ ﺍﻳﻨﻜﻪ ﻣﻲﺗﻮﺍﻧﻴﻢ ﺑﻪ ﺍﻳﻦ ﺁﺩﺭﺱﻫﺎ ﺑﻪ ﺻﻮﺭﺕ ﺑﺎﻳﺘﻲ ﺩﻳﺘﺎ‬
‫‪w‬‬

‫ﻼ‬
‫ﺍﻧﺘﻘﺎﻝ ﺩﻫﻴﻢ ﺑﻪ ﺻﻮﺭﺕ ﺑﻴﺘﻲ ﻧﻴﺰ ﺍﻳﻦ ﺍﻣﺮ ﺍﻣﻜﺎﻥﭘﺬﻳﺮ ﺍﺳﺖ ﻭ ﻣﺎ ﻣﻲﺗﻮﺍﻧﻴﻢ ﻳﻚ ﺑﻴﺖ ﺍﺯ ﻳﻚ ﺑﺎﻳﺖ ﺭﺍ ﻣﺜ ﹰ‬
‫‪w‬‬

‫ﺻﻔﺮ ﻳﺎ ﻳﻚ ﻛﻨﻴﻢ‪.‬‬

‫ﺣﺎﻓﻈﻪ‪RAM‬ﻫﻤﻪ ﻣﻨﻈﻮﺭﻩ‪:‬‬
‫ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش‬
‫اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ‬
‫ﻃﺮاﺣﯽ‪ ،‬ﺗﻮﻟﯿﺪ‪ ،‬اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ‬
‫آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ‬

‫ﺍﺯ ﺁﺩﺭﺱ ‪ 30H‬ﺗﺎ ‪ 2FH‬ﺛﺒﺎﺕﻫﺎﻳﻲ ﻭﺟﻮﺩ ﺩﺍﺭﺩ ﻛﻪ ﺩﺳﺘﺮﺳﻲ ﺑﻪ ﺁﻥﻫﺎ ﺑﻪ ﺻﻮﺭﺕ ﺑﺎﻳﺘﻲ ﺍﺳﺖ‪.‬‬

‫ﻭﺗﻨﻬﺎ ﻓﺮﻗﺸﺎﻥ ﺑﺎ ﺑﻴﺖ ﺁﺩﺭﺱﭘﺬﻳﺮ ﺩﺭ ﻧﺤﻮﻩ ﺩﺳﺘﺮﺳﻲ ﺑﻪ ﺛﺒﺎﺕ ﺍﺳﺖ‪ .‬ﻛﻪ ﺩﺭ ﺑﻴﺖ ﺁﺩﺭﺱﭘﺬﻳﺮ ﺑﻪ ﺻﻮﺭﺕ‬

‫‪r‬‬
‫‪.i‬‬
‫ﺑﻴﺘﻲ ﻭﺩﺭ ﺛﺒﺎﺕﻫﺎﻱ ﻫﻤﻪ ﻣﻨﻈﻮﺭﻩ ﺑﻪﺻﻮﺭﺕ ﺑﺎﻳﺘﻲ ﺍﺳﺖ‪.‬‬

‫‪s‬‬
‫‪r‬‬
‫ﺛﺒﺎﺕﻫﺎﻯ ﻭﻳﮋﻩ‪:‬‬

‫‪e‬‬
‫ﺍﺯ ﺁﺩﺭﺱ‪ 80H‬ﺗﺎ ‪ FFH‬ﻣﺨﺼﻮﺹ ﺛﺒﺎﺕﻫﺎﻱ ﻭﻳﮋﻩﺍﻱ ﺍﺳﺖ ﻛﻪ ﻫﺮ ﻛﺪﺍﻡ ﺍﺯ ﺍﻳﻦﻫﺎ ﺑﺮﺍﻱ ﻛﺎﺭ‬

‫‪k‬‬
‫‪a‬‬
‫ﺧﺎﺻﻲ ﺩﺭ ﻧﻈﺮ ﮔﺮﻓﺘﻪ ﺷﺪﻩﺍﻧﺪ ﻛﻪ ﺍﺭﺗﺒﺎﻁ ‪ CPU‬ﺑﺎ ﺑﻘﻴﻪ ﻗﺴﻤﺖﻫﺎﻱ ﻣﻴﻜﺮﻭﻛﻨﺘﺮﻟﺮ ﺍﺯ ﻃﺮﻳﻖ ﺍﻳﻦ ﺛﺒﺎﺕﻫﺎ‬
‫‪lM‬‬
‫ﺍﻧﺠﺎﻡ ﻣﻲﭘﺬﻳﺮﺩ‪ ،‬ﻛﻪ ﺩﺭ ﺩﺭﺱﻫﺎﻱ ﺁﻳﻨﺪﻩ ﺑﻪ ﺗﻤﺎﻣﻲ ﺁﻥﻫﺎ ﺧﻮﺍﻫﻴﻢ ﭘﺮﺩﺍﺧﺖ‪.‬‬
‫‪o‬‬

‫ﺁﺷﻨﺎﻳﻰ ﺑﺎ ﺳﺎﺧﺘﺎﺭ ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻰ ﻭ ﻣﻌﺮﻓﻰ ﭼﻨﺪ ﺩﺳﺘﻮﺭ‪:‬‬


‫‪tr‬‬

‫ﺩﺭ ﻛﻞ‪ ،‬ﺩﺳﺘﻮﺭﺍﺗﻲ ﻛﻪ ﺩﺭ ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ ﻣﻴﻜﺮﻭﻛﻨﺘﺮﻟﺮ ﺍﺳﺘﻔﺎﺩﻩ ﻣﻲﺷﻮﻧﺪ ﺑﻪ ﺩﻭ ﺩﺳﺘﻪ ﺗﻘﺴﻴﻢ‬


‫‪n‬‬
‫‪o‬‬

‫ﻣﻲﺷﻮﻧﺪ‪:‬‬
‫‪.C‬‬

‫‪ -١‬ﺩﺳﺘﻮﺭﺍﺕ ﻣﺮﺑﻮﻁ ﺑﻪ ‪ CPU‬ﺩﺭ ﻣﻴﻜﺮﻭﻛﻨﺘﺮﻟﺮﻫﺎﻱ ‪٨٠٥١‬‬


‫‪w‬‬

‫‪ -٢‬ﺩﺳﺘﻮﺭﺍﺕ ﻣﺮﺑﻮﻁ ﺑﻪ ‪Assembler‬‬


‫‪w‬‬

‫ﺗﻔﺎﻭﺕ ﺍﻳﻦ ﺩﻭ ﻧﻮﻉ ﺩﺳﺘﻮﺭ ﺍﻳﻦ ﺍﺳﺖ ﻛﻪ ﺩﺳﺘﻮﺭﻫﺎﻱ ‪ Assembler‬ﺩﺭ ﻫﻨﮕﺎﻡ ﻛﺎﻣﭙﺎﻳﻞ ﺷﺪﻥ ﺍﺟﺮﺍ‬
‫‪w‬‬

‫ﻣﻲﺷﻮﻧﺪ ﻭ ﺑﺮﺍﻱ ﺭﺳﺎﻧﺪﻥ ﻣﻔﻬﻮﻣﻲ ﺑﻪ ﺍﺳﻤﺒﻠﺮ ﺍﺳﺖ ﻭﻟﻲ ﺩﺳﺘﻮﺭﻫﺎﻱ ﻧﻮﻉ ﺍﻭﻝ ﺩﺭ ﺩﺍﺧﻞ ﻣﻴﻜﺮﻭ ﺍﺟﺮﺍ‬

‫ﻣﻲﺷﻮﻧﺪ‪.‬‬

‫ﺷﺮﻭﻉ ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻰ‪:‬‬
‫ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش‬
‫اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ‬
‫ﻃﺮاﺣﯽ‪ ،‬ﺗﻮﻟﯿﺪ‪ ،‬اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ‬
‫آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ‬

‫ﺍﮔﺮ ﺗﺎﻛﻨﻮﻥ ﺑﺎ ﺯﺑﺎﻥﻫﺎﻱ ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ ﻣﺨﺘﻠﻒ ﻛﺎﺭ ﻛﺮﺩﻩ ﺑﺎﺷﻴﺪ ﻣﺸﺎﻫﺪﻩ ﻛﺮﺩﻩﺍﻳﺪ ﻛﻪ ﺗﻤﺎﻣﻲ ﺁﻥﻫﺎ‬

‫ﻣﺤﻴﻂ ﻣﺨﺼﻮﺹ ﺑﻪ ﺧﻮﺩ ﺭﺍ ﺩﺍﺭﺍ ﻣﻲﺑﺎﺷﻨﺪ ﻭﻟﻴﻜﻦ ﺧﺼﻮﺻﻴﺖ ﺯﺑﺎﻥ ‪ Assembly‬ﺍﻳﻦ ﺍﺳﺖ ﻛﻪ ﺗﻨﻬﺎ ﻧﻴﺎﺯ‬

‫‪r‬‬
‫‪.i‬‬
‫ﺑﻪ ﻣﺤﻴﻄﻲ ﺩﺍﺭﺩ ﻛﻪ ﺍﺻﻄﻼﺣﹰﺎ ﻗﺎﺑﻠﻴﺖ )‪ (Text Editor‬ﺭﺍ ﺩﺍﺷﺘﻪ ﺑﺎﺷﺪ‪.‬‬

‫‪s‬‬
‫ﺍﮔﺮ ﻣﺤﻴﻂ ﻛﺎﺭ ﺷﻤﺎ ﻭﻳﻨﺪﻭﺯ ﺑﺎﺷﺪ ﻣﻲﺗﻮﺍﻧﻴﺪ ﺑﺎ ﺍﺟﺮﺍ ﻧﻤﻮﺩﻥ ﻧﺮﻡﺍﻓﺰﺍﺭ‪ NOTE PAD‬ﻭ ﭼﻨﺎﻧﭽﻪ‬

‫‪r‬‬
‫‪e‬‬
‫ﺩﺭ ﺳﻴﺴﺘﻢ ﻋﺎﻣﻞ ‪ Dos‬ﻛﺎﺭ ﻣﻲﻛﻨﻴﺪ ﻣﻲﺗﻮﺍﻧﻴﺪ ﺑﺎ ﺍﺟﺮﺍﻱ ﻧﺮﻡﺍﻓﺰﺍﺭ ‪ Edit.exe‬ﻣﺤﻴﻂ ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ ﺧﻮﺩ ﺭﺍ‬

‫‪k‬‬
‫‪a‬‬
‫ﻓﻌﺎﻝ ﻧﻤﺎﻳﻴﺪ‪.‬‬
‫‪lM‬‬
‫ﻫﻢﺍﻛﻨﻮﻥ ﺷﻤﺎ ﻣﻲﺗﻮﺍﻧﻴﺪ ﺩﺳﺘﻮﺭﺍﺕ ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ ﺭﺍ ﺩﺭ ﺍﻳﻦ ﻣﺤﻴﻂ ﺗﺎﻳﭗ ﻧﻤﺎﻳﻴﺪ‪.‬‬

‫‪ORG‬‬
‫‪o‬‬

‫ﺩﺳﺘﻮﺭ ﻓﻮﻕ ﻛﻪ ﻣﺮﺑﻮﻁ ﺑﻪ ‪ Assembler‬ﻣﻲﺑﺎﺷﺪ ﺑﻪ ﺷﻤﺎ ﺍﻣﻜﺎﻥ ﻣﻲﺩﻫﺪ‪ ،‬ﺁﺩﺭﺱ ﺷﺮﻭﻉ ﺑﺮﻧﺎﻣﻪ ﺩﺭ‬
‫‪tr‬‬

‫ﺣﺎﻓﻈﻪ ﺑﺮﻧﺎﻣﻪ ‪ EEPROM‬ﻣﻴﻜﺮﻭﻛﻨﺘﺮﻟﺮ ﺭﺍ ﺗﻌﻴﻴﻦ ﻧﻤﺎﻳﻴﺪ‪.‬‬


‫‪n‬‬
‫‪o‬‬
‫‪.C‬‬

‫ﻣﺜﺎل‪:‬‬
‫‪ORG 0H‬‬
‫‪w‬‬

‫ﺍﻳﻦ ﺩﺳﺘﻮﺭ ﺷﺮﻭﻉ ﺑﺮﻧﺎﻣﻪ ﺩﺭ ﺣﺎﻓﻈﻪ ﺭﺍ ﺍﺯ ﺧﺎﻧﻪ ﺻﻔﺮ ﺁﻥ ﺗﻌﻴﻴﻦ ﻣﻲﻛﻨﺪ‪.‬‬


‫‪w‬‬

‫‪MOV‬‬
‫‪w‬‬

‫ﺍﻳﻦ ﺩﺳﺘﻮﺭ ﺑﺮﺍﻱ ﻛﭙﻲ ﻛﺮﺩﻥ ﻳﻚ ﺧﺎﻧﻪ ﺍﺯ ﺣﺎﻓﻈﻪ ﻳﺎ ﺩﺍﺩﻩﻫﺎ ﺩﺭ ﺑﺎﻳﺖﻫﺎﻱ ﺣﺎﻓﻈﻪ ﺍﺳﺘﻔﺎﺩﻩ ﻣﻲﺷﻮﺩ‪ .‬ﺗﻮﺟﻪ‬

‫ﻛﻨﻴﺪ ﻛﻪ ﺍﻳﻦ ﺩﺳﺘﻮﺭ ﻳﻚ ﺩﺳﺘﻮﺭ ﺑﺎﻳﺘﻲ ﺍﺳﺖ‪.‬‬

‫ﻣﺜﺎل ‪:1‬‬
‫‪MOV P1,#55H‬‬
‫ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش‬
‫اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ‬
‫ﻃﺮاﺣﯽ‪ ،‬ﺗﻮﻟﯿﺪ‪ ،‬اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ‬
‫آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ‬

‫ﺍﻳﻦ ﺩﺳﺘﻮﺭ ﻣﻘﺪﺍﺭ ﻋﺪﺩﻱ ‪ ٥٥‬ﺩﺭ ﻣﺒﻨﺎﻱ ﺷﺎﻧﺰﺩﻩ ﺭﺍ ﺩﺭ ﺑﺎﻳﺘﻲ ﺍﺯ ﺣﺎﻓﻈﻪ ﺑﻪ ﻧﺎﻡ ‪ P1‬ﻣﻲﺭﻳﺰﺩ‪.‬‬

‫‪MOV P1,#85D‬‬

‫‪r‬‬
‫ﺍﻳﻦ ﺩﺳﺘﻮﺭ ﻣﻘﺪﺍﺭ ﻋﺪﺩﻱ ‪ ٨٥‬ﺩﺭ ﻣﺒﻨﺎﻱ ﺩﻩ ﺭﺍ ﺩﺭ ﺑﺎﻳﺘﻲ ﺍﺯ ﺣﺎﻓﻈﻪ ﺑﻪ ﻧﺎﻡ ‪ P1‬ﻣﻲﺭﻳﺰﺩ‪.‬‬

‫‪.i‬‬
‫‪s‬‬
‫‪MOV P1,#01010011B‬‬

‫‪r‬‬
‫ﺍﻳﻦ ﺩﺳﺘﻮﺭ ﻣﻘﺪﺍﺭ ﻋﺪﺩﻱ ‪ ٠١٠١٠٠١١‬ﺩﺭ ﻣﺒﻨﺎﻱ ﺩﻭ ﺭﺍ ﺩﺭ ﺑﺎﻳﺘﻲ ﺍﺯ ﺣﺎﻓﻈﻪ ﺑﻪ ﻧﺎﻡ ‪ P1‬ﻣﻲﺭﻳﺰﺩ‪.‬‬

‫‪e‬‬
‫‪k‬‬
‫ﺗﻮﺟﻪ‪ :‬ﻫﻤﺎﻥﻃﻮﺭ ﻛﻪ ﺩﺭ ﺩﺳﺘﻮﺭﺍﺕ ﺑﺎﻻ ﻣﺸﺎﻫﺪﻩ ﻧﻤﻮﺩﻳﺪ ﻋﻼﻣﺖ ‪ #‬ﻗﺒﻞ ﺍﺯ ﻫﺮ ﻛﺪﺍﻡ ﺍﺯ ﺍﻋﺪﺍﺩ ﻗﻴﺪ‬

‫‪a‬‬
‫‪lM‬‬
‫ﺷﺪﻩ ﺑﻮﺩ‪ .‬ﺍﻳﻦ ﻋﻼﻣﺖ ﺑﺮﺍﻱ ﻣﺸﺨﺺ ﻧﻤﻮﺩﻥ ﺍﻳﻦ ﻣﻔﻬﻮﻡ ﺍﺳﺖ ﻛﻪ ﻣﻘﺪﺍﺭ ﻋﺪﺩﻱ ﻋﺒﺎﺭﺕ ﺑﻌﺪﻱ‬

‫ﻣﻲﺑﺎﻳﺴﺖ ﺩﺭ ﺑﺎﻳﺖ ﻣﻌﺮﻓﻲ ﺷﺪﻩ ﺍﺯ ﺣﺎﻓﻈﻪ ﺭﻳﺨﺘﻪ ﺷﻮﺩ‪.‬‬


‫‪o‬‬

‫ﻣﺜﺎل ‪:2‬‬
‫‪tr‬‬

‫‪MOV P1,55H‬‬
‫‪n‬‬

‫ﺍﻳﻦ ﺩﺳﺘﻮﺭ ﻣﺤﺘﻮﻳﺎﺕ ﺩﺍﺧﻞ ﺑﺎﻳﺖ ‪ 55H‬ﺣﺎﻓﻈﻪ ﺭﺍ ﺩﺭ ﺧﺎﻧﻪ ‪ P1‬ﺣﺎﻓﻈﻪ ﻣﻲﺭﻳﺰﺩ‪ .‬ﺩﻗﺖ ﻛﻨﻴﺪ ﻛﻪ ﺗﻤﺎﻡ‬
‫‪o‬‬

‫ﺛﺒﺎﺕﻫﺎﻱ ﻣﻮﺟﻮﺩ ﺭﺍ ﻣﻲﺗﻮﺍﻥ ﺑﻪﺟﺎﻱ ﺍﻳﻦ ﺑﺎﻳﺖ ﺍﺳﺘﻔﺎﺩﻩ ﻛﺮﺩ‪.‬‬


‫‪.C‬‬

‫ﻣﺜﺎل ‪:3‬‬
‫‪w‬‬

‫‪MOV A,P1‬‬
‫‪MOV P2,A‬‬
‫‪w‬‬

‫ﺩﺭ ﻣﺜﺎﻝ ﺑﺎﻻ ﺍﮔﺮ ﺑﺨﻮﺍﻫﻴﻢ ﺍﻃﻼﻋﺎﺕ ﺭﻭﻱ ‪ P1‬ﺭﺍ ﺭﻭﻱ ‪ P2‬ﺑﺮﻳﺰﻳﻢ ﺍﺑﺘﺪﺍ ﺑﺎﻳﺪ ﺩﻳﺘﺎ ﺭﺍ ﺑﻪ‬
‫‪w‬‬

‫ﺁﻛﻮﻣﻮﻻﺗﻮﺭ ﺍﻧﺘﻘﺎﻝ ﺩﻫﻴﻢ ﻭﺳﭙﺲ ﺍﺯ ﺁﻛﻮﻣﻮﻻﺗﻮﺭ ﺑﻪ ‪ P2‬ﺍﻧﺘﻘﺎﻝ ﺩﻫﻴﻢ‪.‬‬

‫ﻋﺒﺎﺭﺍﺕ ‪ B,D,H‬ﻛﻪ ﺑﻌﺪ ﺍﺯ ﻣﻘﺪﺍﺭﻫﺎﻱ ﻋﺪﺩﻱ ﻗﻴﺪ ﺷﺪﻩ ﺁﻣﺪﻩ ﺍﺳﺖ ﻣﺒﻴﻦ ﻣﺒﻨﺎﻱ ﻋﺪﺩ ﻣﻲﺑﺎﺷﺪ‪.‬‬

‫‪B = Binary‬‬ ‫‪D = Decimal‬‬ ‫‪H = Hexadecimal‬‬


‫ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش‬
‫اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ‬
‫ﻃﺮاﺣﯽ‪ ،‬ﺗﻮﻟﯿﺪ‪ ،‬اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ‬
‫آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ‬

‫‪EQU‬‬

‫‪r‬‬
‫ﺍﻳﻦ ﺩﺳﺘﻮﺭ ﻣﺮﺑﻮﻁ ﺑﻪ ﺍﺳﻤﺒﻠﺮ ﺑﻮﺩﻩ ﻭ ﺟﻬﺖ ﻧﺎﻣﮕﺬﺍﺭﻱ ﻗﺴﻤﺘﻲ ﺍﺯ ﺣﺎﻓﻈﻪ ﺩﺍﺧﻠﻲ ﻣﻴﻜﺮﻭﻛﻨﺘﺮﻟﺮ‬

‫‪.i‬‬
‫‪s‬‬
‫ﺍﺳﺘﻔﺎﺩﻩ ﻣﻲﺷﻮﺩ‪.‬‬

‫‪r‬‬
‫ﻣﺜﺎل‪ :4‬ﺑﺮﻧﺎﻣﻪ ﺯﻳﺮ ﺧﺎﻧﻪ ‪ 20H‬ﺍﺯ ﺣﺎﻓﻈﻪ ﺭﺍ ﺑﻪ ‪ MEMORY‬ﻧﺎﻣﮕﺬﺍﺭﻱ ﻣﻲﻛﻨﺪ‪.‬‬

‫‪e‬‬
‫‪k‬‬
‫‪MEMORY‬‬ ‫‪EQU‬‬ ‫‪20H‬‬

‫‪a‬‬
‫ﺍﻳﺠﺎﺩ ﺣﻠﻘﻪﻫﺎ ﺩﺭ ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻰ ﻣﻴﮑﺮﻭﮐﻨﺘﺮﻟﺮ‪:‬‬
‫‪lM‬‬
‫‪JMP‬‬
‫ﻼ‬
‫ﺍﻳﻦ ﺩﺳﺘﻮﺭ ﺑﺮﺍﻱ ﭘﺮﺵ ﺑﻪ ﻣﻜﺎﻧﻲ ﺍﺯ ﺑﺮﻧﺎﻣﻪ ﺍﺳﺘﻔﺎﺩﻩ ﻣﻲﺷﻮﺩ ﻛﻪ ﺍﻳﻦ ﻣﻜﺎﻥ ﻳﻚ ﺑﺮﭼﺴﺐ ﺍﺳﺖ ﻛﻪ ﻗﺒ ﹰ‬
‫‪o‬‬
‫‪tr‬‬

‫ﻧﺎﻣﮕﺬﺍﺭﻱ ﺷﺪﻩ ﺍﺳﺖ ﺩﻗﺖ ﻛﻨﻴﺪ ﻛﻪ ﺑﺮﺍﻱ ﭘﺮﺵﻫﺎﻱ ﻛﻮﺗﺎﻩ ﻣﻲﺗﻮﺍﻥ ﺍﺯ ﺩﺳﺘﻮﺭ ‪ LJMP‬ﻭ ﺑﺮﺍﻱ ﭘﺮﺵﻫﺎﻱ‬
‫‪n‬‬

‫ﺑﻠﻨﺪ ﺍﺯ ﺩﺳﺘﻮﺭ ‪ SJMP‬ﺍﺳﺘﻔﺎﺩﻩ ﻛﺮﺩ‪.‬‬


‫‪o‬‬
‫‪.C‬‬
‫‪w‬‬
‫‪w‬‬
‫‪w‬‬
‫ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش‬
‫اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ‬
‫ﻃﺮاﺣﯽ‪ ،‬ﺗﻮﻟﯿﺪ‪ ،‬اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ‬
‫آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ‬

‫ﻣﺜﺎل ‪:5‬‬
‫‪LOOP:‬‬
‫‪.‬‬

‫‪r‬‬
‫‪.i‬‬
‫‪.‬‬

‫‪s‬‬
‫‪.‬‬

‫‪r‬‬
‫‪JMP LOOP‬‬

‫‪e‬‬
‫‪k‬‬
‫ﺩﺳﺘﻮﺭ ﻓﻮﻕ ﺑﻪ ﻣﻜﺎﻧﻲ ﺍﺯ ﺑﺮﻧﺎﻣﻪ ﺑﻪ ﻧﺎﻡ ‪ LOOP‬ﭘﺮﺵ ﻣﻲﻛﻨﺪ‪.‬‬

‫‪a‬‬
‫‪lM‬‬
‫‪LOOP:JMP LOOP‬‬
‫ﺍﻳﻦ ﺧﻂ ﺑﺮﻧﺎﻣﻪ ﺑﺎﻋﺚ ﻣﻲﺷﻮﺩ ‪ CPU‬ﺩﺭ ﻳﻚ ﺣﻠﻘﻪ ﮔﻴﺮ ﻛﻨﺪ‪ .‬ﺍﻟﺒﺘﻪ ﻣﻲﺗﻮﺍﻥ ﺑﻪ ﺟﺎﻱ ﺑﺮﻧﺎﻣﻪ ﻓﻮﻕ ﺍﺯ‬
‫‪o‬‬

‫ﺩﺳﺘﻮﺭ ‪ JMP $‬ﻧﻴﺰ ﺍﺳﺘﻔﺎﺩﻩ ﻛﺮﺩ‪.‬‬


‫‪tr‬‬
‫‪n‬‬

‫‪END‬‬
‫‪o‬‬
‫‪.C‬‬

‫ﺍﻳﻦ ﺩﺳﺘﻮﺭ ﻣﺮﺑﻮﻁ ﺑﻪ ‪ ASSEMBLER‬ﺍﺳﺖ ﻛﻪ ﻧﺸﺎﻥ ﺩﻫﻨﺪﻩ ﭘﺎﻳﺎﻥ ﺑﺮﻧﺎﻣﻪ ﻭ ﺧﺮﻭﺝ ﺍﺯ ﺁﻥ‬

‫ﺍﺳﺖ‪ .‬ﻻﺯﻡ ﺑﻪ ﺫﻛﺮ ﺍﺳﺖ ﺍﻳﻦ ﺩﺳﺘﻮﺭ ﻣﻲﺑﺎﻳﺴﺖ ﻫﻤﻴﺸﻪ ﺁﺧﺮﻳﻦ ﺧﻂ ﺑﺮﻧﺎﻣﻪ ﺑﺎﺷﺪ‪.‬‬
‫‪w‬‬

‫ﻧﮑﺘﻪ‪ :‬ﺷﻤﺎ ﺑﺎﻳﺪ ﺑﻪ ﮔﻮﻧﻪﺍﻱ ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ ﻧﻤﺎﻳﻴﺪ ﻛﻪ ﻫﻴﭽﮕﺎﻩ ﺑﺮﻧﺎﻣﻪ ﺑﻪ ﺩﺳﺘﻮﺭ ‪ END‬ﻧﺮﺳﺪ‪.‬‬
‫‪w‬‬
‫‪w‬‬

‫ﻧﻤﻮﻧﻪ ﺑﺮﻧﺎﻣﻪ )‪:(١‬‬


‫ﺑﺎ ﺗﺮﻛﻴﺐ ﺩﺳﺘﻮﺭﺍﺕ ﻓﻮﻕ ﺷﻤﺎ ﻣﻲﺗﻮﺍﻧﻴﺪ ﻳﻚ ﺑﺮﻧﺎﻣﻪ ﺳﺎﺩﻩ ﺑﻨﻮﻳﺴﻴﺪ‪:‬‬

‫‪ORG 0‬‬
‫‪MOV P1,#55H‬‬
‫‪LOOP: JMP LOOP‬‬
‫ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش‬
‫اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ‬
‫ﻃﺮاﺣﯽ‪ ،‬ﺗﻮﻟﯿﺪ‪ ،‬اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ‬
‫آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ‬

‫‪END‬‬
‫ﺑﺎ ﭘﺮﻭﮔﺮﺍﻡ ﻧﻤﻮﺩﻥ ‪ IC‬ﻭ ﻗﺮﺍﺭﺩﺍﺩﻥ ﺁﻥ ﺑﺮ ﺭﻭﻱ ﺑﺮﺩ ﺁﻣﻮﺯﺷﻲ ﺍﻳﻦ ﺑﺮﻧﺎﻣﻪ ﺑﺎﻋﺚ ﻣﻲﺷﻮﺩ ﻛﻪ ‪ LED‬ﻫﺎﻱ‬

‫‪r‬‬
‫ﺭﻭﻱ ﺑﺮﺩ ﺑﻪ ﺻﻮﺭﺕ ﻳﻚ ﺩﺭﻣﻴﺎﻥ ﺭﻭﺷﻦ ﺷﻮﻧﺪ‪ .‬ﭼﺮﺍ؟‬

‫‪.i‬‬
‫‪s‬‬
‫ﺣﺎﻝ ﺑﻪ ﺗﺤﻠﻴﻞ ﺑﺮﻧﺎﻣﻪ ﻭ ﻧﺤﻮﻩ ﮐﺎﺭ ﺁﻥ ﻣﻰﭘﺮﺩﺍﺯﻳﻢ‪:‬‬

‫‪r‬‬
‫‪e‬‬
‫ﺍﻭﻟﻴﻦ ﺩﺳﺘﻮﺭ ﻛﻪ ﻧﻤﺎﻳﺎﻥﮔﺮ ﺧﺎﻧﻪ ﺷﺮﻭﻉ ﺑﺮﻧﺎﻣﻪ ﺍﺳﺖ‪ .‬ﻫﻤﺎﻥﻃﻮﺭ ﻛﻪ ﺩﺭ ﻣﺒﺎﺣﺚ ﻣﻴﻜﺮﻭﻛﻨﺘﺮﻟﺮ‬

‫‪k‬‬
‫‪ 89C51‬ﻣﻄﺎﻟﻌﻪ ﻧﻤﻮﺩﻩﺍﻳﺪ‪ P1 ،‬ﺩﻗﻴﻘﹰﺎ ﻳﻚ ﺑﺎﻳﺖ ﺍﺯ ﺣﺎﻓﻈﻪ ‪ RAM‬ﻣﻴﻜﺮﻭﻛﻨﺘﺮﻟﺮ ﻣﻲﺑﺎﺷﺪ ﻛﻪ ﺑﻪ ﺍﺯﺍﻱ ﻫﺮ‬

‫‪a‬‬
‫‪lM‬‬
‫ﺑﻴﺖ ﺧﻮﺩ ﻳﻚ ﭘﺎﻳﻪ ‪ I/O‬ﺑﺮ ﺭﻭﻱ ﻣﻴﻜﺮﻭﻛﻨﺘﺮﻟﺮ ﺩﺍﺭﺩ )ﭘﺎﻳﻪ ‪ ١‬ﺗﺎ ‪ .(٨‬ﺣﺎﻝ ﺍﮔﺮ ﻫﺮ ﺑﻴﺖ ﺍﺯ ﺍﻳﻦ ﺣﺎﻓﻈﻪ ﻳﻚ‬

‫ﺷﻮﺩ ﺷﻤﺎ ﺭﻭﻱ ﭘﺎﻳﻪ ﻧﻈﻴﺮ ﺁﻥ ‪ +5V‬ﻭ ﭼﻨﺎﻧﭽﻪ ﺻﻔﺮ ﺷﻮﺩ ﺷﻤﺎ ﺭﻭﻱ ﭘﺎﻳﻪ ﻧﻈﻴﺮ ﻫﺮ ﺑﻴﺖ ﻣﻘﺪﺍﺭ ﺻﻔﺮ ﻳﺎ‬
‫‪o‬‬

‫‪ GND‬ﺧﻮﺍﻫﻴﺪ ﺩﺍﺷﺖ ﻭ ﺑﺎﻟﻌﻜﺲ‪.‬‬


‫‪tr‬‬

‫ﺣﺎﻝ ﻋﺪﺩ ‪ 55H‬ﺭﺍ ﺑﻪ ﺑﺎﻳﻨﺮﻱ ﺗﺒﺪﻳﻞ ﻧﻤﺎﻳﻴﺪ ﻭ ﺩﺭ ﺑﻴﺖﻫﺎﻱ ﻧﻈﻴﺮ ﺣﺎﻓﻈﻪ ﻗﺮﺍﺭﺩﻫﻴﺪ‪.‬‬
‫‪n‬‬
‫‪o‬‬

‫‪55H = 010101010 B‬‬


‫‪.C‬‬

‫ﺩﻗﻴﻘﹰﺎ ﺑﻪ ﺍﺯﺍﻱ ﻋﺪﺩ ﺑﺎﻳﻨﺮﻱ ﺑﺎﻻ ﭘﺎﻳﻪﻫﺎﻱ ﻣﻴﻜﺮﻭ ﻓﻌﺎﻝ ﻣﻲﺷﻮﻧﺪ‪.‬‬


‫‪w‬‬

‫ﻧﮑﺘﻪ‪ :‬ﺍﻟﺒﺘﻪ ﺗﻮﺟﻪ ﻧﻤﺎﻳﻴﺪ ‪LED‬ﻫﺎﻱ ﺭﻭﻱ ﺑﺮﺩ ﺁﻣﻮﺯﺷﻲ ﺑﻪ ﺻﻮﺭﺕ ﺁﻧﺪ ﻣﺸﺘﺮﻙ ﺑﺴﺘﻪ ﺷﺪﻩﺍﻧﺪ ﺩﺭ‬
‫‪w‬‬

‫ﻧﺘﻴﺠﻪ ‪ Active LoW‬ﻫﺴﺘﻨﺪ ﭘﺲ ﺑﻪ ﺍﺯﺍﻱ ﻫﺮ ﺻﻔﺮ ‪ LED‬ﺭﻭﺷﻦ ﻣﻲﺷﻮﺩ‪.‬‬


‫‪w‬‬

‫ﺍﻳﺠﺎﺩ ﺗﺄﺧﻴﺮ ﺯﻣﺎﻧﻰ ﺩﺭ ﺭﻭﻧﺪ ﻓﻌﺎﻟﻴﺖ ﻣﻴﮑﺮﻭ ﺑﻪ ﻭﺳﻴﻠﻪ ﺣﻠﻘﻪﻫﺎ‪:‬‬


‫‪DJNZ COUNT,LOOP‬‬
‫ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش‬
‫اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ‬
‫ﻃﺮاﺣﯽ‪ ،‬ﺗﻮﻟﯿﺪ‪ ،‬اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ‬
‫آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ‬

‫ﻼ ﺗﻮﺳﻂ ﺩﺳﺘﻮﺭ ‪ EQU‬ﺑﻪ ﻧﺎﻡ ‪COUNT‬‬


‫ﺍﻳﻦ ﺩﺳﺘﻮﺭ ﻣﻘﺪﺍﺭ ﻋﺪﺩﻱ ﺧﺎﻧﻪﺍﻱ ﺍﺯ ﺣﺎﻓﻈﻪ ﻛﻪ ﻗﺒ ﹰ‬

‫ﺗﻌﺮﻳﻒ ﺷﺪﻩ ﺍﺳﺖ ﺭﺍ ﻳﻚ ﻭﺍﺣﺪ ﻛﺎﻫﺶ ﻣﻲﺩﻫﺪ ﻭ ﺍﮔﺮ ﻣﻘﺪﺍﺭ ﺁﻥ ﺧﺎﻧﻪ ﺻﻔﺮ ﻧﺒﻮﺩ ﺑﻪ ﺁﺩﺭﺳﻲ ﺍﺯ ﺧﺎﻧﻪ‬

‫‪r‬‬
‫‪.i‬‬
‫ﺣﺎﻓﻈﻪ ﺑﻪ ﻧﺎﻡ ‪ LOOP‬ﭘﺮﺵ ﻣﻲﻛﻨﺪ‪.‬‬

‫‪s‬‬
‫‪r‬‬
‫‪e‬‬
‫‪k‬‬
‫‪a‬‬
‫‪lM‬‬
‫‪o‬‬
‫‪tr‬‬
‫‪n‬‬
‫‪o‬‬
‫‪.C‬‬
‫‪w‬‬
‫‪w‬‬
‫‪w‬‬
‫ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش‬
‫اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ‬
‫ﻃﺮاﺣﯽ‪ ،‬ﺗﻮﻟﯿﺪ‪ ،‬اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ‬
‫آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ‬

‫ﺩﺭ ﻣﺜﺎﻝ ﺯﻳﺮ ﺑﺎ ﺍﻳﺠﺎﺩ ﻳﻚ ﺗﺎﺧﻴﺮ ﺯﻣﺎﻧﻲ ﺩﻭ ﻣﻘﺪﺍﺭ ﻣﺨﺘﻠﻒ ﺭﺍ ﺑﺮ ﺭﻭﻱ ﭘﻮﺭﺕ ﻳﻚ ﺑﺎ ﻓﺎﺻﻠﻪ‬

‫ﺯﻣﺎﻧﻲ ﻣﺸﺨﺺ ﺭﺍ ﻣﻲﺗﻮﺍﻧﻴﻢ ﺭﻭﻱ ﺍﺳﻜﻮﭖ ﺑﺒﻴﻨﻴﻢ‪.‬‬

‫‪r‬‬
‫‪.i‬‬
‫ﻧﻤﻮﻧﻪ ﺑﺮﻧﺎﻣﻪ)‪:(٢‬‬

‫‪s‬‬
‫‪COUNT EQU 30H‬‬

‫‪r‬‬
‫‪e‬‬
‫‪ORG 00H‬‬
‫‪MAIN:‬‬

‫‪k‬‬
‫‪MOV COUNT,#200‬‬

‫‪a‬‬
‫‪MOV P1,#01010101B‬‬
‫‪lM‬‬

‫‪LOOP: DJNZ COUNT,LOOP‬‬


‫‪o‬‬

‫‪MOV P1,#10101010B‬‬
‫‪tr‬‬

‫‪MOV COUNT,#250‬‬
‫‪n‬‬

‫‪LOOP1:DJNZ COUNT,LOOP‬‬
‫‪o‬‬

‫‪JMP MAIN‬‬
‫‪.C‬‬

‫ﺑﺮﻧﺎﻣﻪ ﻓﻮﻕ ﻳﻚ ﺑﺎﺭ ﭘﻮﺭﺕ ﻳﻚ ﺭﺍ ﺑﺎ ‪ 55H‬ﻓﻌﺎﻝ ﻛﺮﺩﻩ ﻭ ﺑﻌﺪ ﺍﺯ ‪ 400µs‬ﭘﻮﺭﺕ ﻳﻚ ﺭﺍ ﺑﺎ ‪AAH‬‬

‫ﺑﺎﺭﮔﺬﺍﺭﻱ ﻣﻲﻛﻨﺪ ﻭ ﺑﻌﺪ ﺍﺯ ‪ 501µs‬ﺩﻭﺑﺎﺭﻩ ﭘﻮﺭﺕ ﻳﻚ ﺭﺍ ﺑﺎ ‪ 55H‬ﺑﺎﺭﮔﺬﺍﺭﻱ ﻣﻲﻛﻨﺪ ﻭ ﻫﻤﻴﻦ ﻛﺎﺭ ﺍﺩﺍﻣﻪ‬
‫‪w‬‬
‫‪w‬‬

‫ﺧﻮﺍﻫﺪ ﺩﺍﺷﺖ‪ .‬ﺷﺎﻳﺪ ﺍﺯ ﺧﻮﺩ ﺑﭙﺮﺳﻴﺪ ﭼﮕﻮﻧﻪ ﻣﺘﻮﺟﻪ ﻣﻲﺷﻮﻳﻢ ﻣﻘﺪﺍﺭ ﭘﻮﺭﺕﻫﺎ‪ ،‬ﺑﻌﺪ ﺍﺯ ﮔﺬﺷﺖ ﭼﻪ‬
‫‪w‬‬

‫ﺯﻣﺎﻧﻲ ﻋﻮﺽ ﻣﻲﺷﻮﻧﺪ؟‬

‫ﺧﻴﻠﻲ ﺳﺎﺩﻩ ﺍﺳﺖ ﺍﻧﺠﺎﻡ ﻫﺮ ﺩﺳﺘﻮﺭ ‪ DJNZ‬ﺩﻭ ﺳﻴﻜﻞ ﻣﺎﺷﻴﻦ ﺯﻣﺎﻥ ﻧﻴﺎﺯ ﺩﺍﺭﺩ ﻭ ﺩﺭ ﺣﻠﻘﻪ ﺍﻭﻝ ﻣﺎ‬

‫‪ ٢٠٠‬ﺑﺎﺭ ﺍﻳﻦ ﺩﺳﺘﻮﺭ ﺭﺍ ﺍﺟﺮﺍ ﻧﻤﻮﺩﻳﻢ ﭘﺲ ﺩﺭ ﻣﺠﻤﻮﻉ ‪ 400µs‬ﻭ ﺩﺭ ﺣﻠﻘﻪ ﺑﻌﺪﻱ ﭼﻮﻥ ﻗﺒﻞ ﺍﺯ ﺁﻥ ﻳﻚ‬
‫ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش‬
‫اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ‬
‫ﻃﺮاﺣﯽ‪ ،‬ﺗﻮﻟﯿﺪ‪ ،‬اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ‬
‫آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ‬

‫ﺩﺳﺘﻮﺭ ‪ MOV‬ﻭﺟﻮﺩ ﺩﺍﺭﺩ ﻭ ﻣﻲﺩﺍﻧﻴﻢ ﺑﺮﺍﻱ ﺍﻧﺠﺎﻡ ﺍﻳﻦ ﺩﺳﺘﻮﺭ ﻧﻴﺰ ﻳﻚ ﺳﻴﻜﻞ ﻣﺎﺷﻴﻦ ﺯﻣﺎﻥ ﻧﻴﺎﺯ ﺩﺍﺭﻳﻢ‬

‫ﺩﺭ ﻣﺠﻤﻮﻉ ‪ ٢*٢٥٠+١‬ﺳﻴﻜﻞ ﻣﺎﺷﻴﻦ ﺗﺄﺧﻴﺮ ﺍﻳﺠﺎﺩ ﺷﺪﻩ ﺍﺳﺖ‪.‬‬

‫‪r‬‬
‫‪.i‬‬
‫ﻃﺒﻖ ﺍﺳﺘﺎﻧﺪﺍﺭﺩﻱ ﻛﻪ ﺩﺭ ﺍﺑﺘﺪﺍﻱ ﺍﻳﻦ ﻓﺼﻞ ﺑﺮﺍﻱ ﺳﺨﺖﺍﻓﺰﺍﺭ ﻣﻴﻜﺮﻭ ﻗﺮﺍﺭ ﺩﺍﺩﻳﻢ ﺍﺯ‬ ‫ﻧﮑﺘﻪ‪:‬‬

‫‪s‬‬
‫ﻧﻮﺳﺎﻥﺳﺎﺯ ‪ 12MHz‬ﺍﺳﺘﻔﺎﺩﻩ ﻣﻲﻛﻨﻴﻢ ﻭ ﺩﺭ ﻧﺘﻴﺠﻪ ﻫﺮ ﺳﻴﻜﻞ ﻣﺎﺷﻴﻦ ﻳﻚ ﻣﻴﻜﺮﻭﺛﺎﻧﻴﻪ ﺯﻣﺎﻥ ﻧﻴﺎﺯ ﺩﺍﺭﺩ‪.‬‬

‫‪r‬‬
‫‪e‬‬
‫ﺷﻤﺎ ﻣﻲﺗﻮﺍﻧﻴﺪ ﺑﺮﺍﻱ ﺗﺴﺖ ﺑﺼﺮﻱ ﺍﻳﻦ ﺗﻐﻴﻴﺮﺍﺕ ﺍﺯ ﺩﺳﺘﮕﺎﻩ ﺍﺳﻴﻠﻮﺳﻜﻮﭖ ﺍﺳﺘﻔﺎﺩﻩ ﻧﻤﺎﻳﻴﺪ‪ .‬ﺯﻳﺮﺍ ﺑﻪ ﻋﻠﺖ‬

‫‪k‬‬
‫ﺳﺮﻋﺖ ﺯﻳﺎﺩ ‪LED‬ﻫﺎ ﺗﻐﻴﻴﺮﺍﺕ ﺁﻥ ﺑﺮﺍﻱ ﻣﺎ ﻣﻠﻤﻮﺱ ﻧﻴﺴﺖ‪.‬‬

‫‪a‬‬
‫‪lM‬‬
‫ﺑﺮﺍﻱ ﺗﻨﻄﻴﻢ ﺯﻣﺎﻥ ﺑﻴﺸﺘﺮ ﻣﻲﺗﻮﺍﻧﻴﺪ ﺍﺯ ﭼﻨﺪ ﺣﻠﻘﻪ ﻣﺘﺪﺍﺧﻞ ﺍﺳﺘﻔﺎﺩﻩ ﻧﻤﺎﻳﻴﺪ ﻛﻪ ﺑﺎ ﻳﻚ ﻣﺜﺎﻝ ﺩﺭ ﺯﻳﺮ ﻧﺸﺎﻥ‬

‫ﺩﺍﺩﻩ ﺷﺪﻩ ﺍﺳﺖ‪.‬‬


‫‪o‬‬
‫‪tr‬‬

‫‪X = LOOP1 = 2*255‬‬


‫‪n‬‬

‫‪Z = 10 * Y‬‬
‫‪Y = LOOP2 = 255*X‬‬
‫‪o‬‬

‫‪Z = LOOP3 = 10*Y‬‬ ‫‪Y = 255 * X‬‬


‫‪.C‬‬

‫ﺩﺭ ﻧﺘﻴﺠﻪ‬ ‫‪X = 2*255‬‬

‫‪Z = 10 * (255 * (2 * 255)) = 1300500‬‬


‫‪w‬‬

‫ﭘﺲ ﺑﺎ ﺗﺸﻜﻴﻞ ﺣﻠﻘﻪﻫﺎﻱ ﺭﻭﺑﺮﻭ ﺗﻘﺮﻳﺒﹰﺎ ‪ ١/٣‬ﺛﺎﻧﻴﻪ ﺗﺄﺧﻴﺮ‬


‫‪w‬‬

‫ﺍﻳﺠﺎﺩ ﻧﻤﻮﺩﻳﻢ‪.‬‬
‫‪w‬‬

‫ﺍﻟﺒﺘﻪ ﺗﻮﺟﻪ ﻧﻤﺎﻳﻴﺪ ﻣﺎ ﺍﺯ ﻣﻘﺪﺍﺭ ﺗﺄﺧﻴﺮ ﻣﺮﺑﻮﻁ ﺑﻪ ﺧﻮﺩ ‪ DJNZ‬ﺩﺭ ﺣﻠﻘﻪ ﺩﻭﻡ ﻭ ﺳﻮﻡ ﺻﺮﻑ ﻧﻈﺮ‬

‫ﻛﺮﺩﻳﻢ ﺯﻳﺮﺍ ﺩﺭ ﻣﻘﺎﺑﻞ ﻋﺪﺩ ﺑﻪ ﺩﺳﺖ ﺁﻣﺪﻩ ﻣﻘﺪﺍﺭ ﻧﺎﭼﻴﺰﻱ ﺍﺳﺖ‪ .‬ﻭﻣﺎ ﺍﺯ ﺁﻥ ﭼﺸﻢﭘﻮﺷﻲ ﻣﻲﻛﻨﻴﻢ‪.‬‬
‫ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش‬
‫اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ‬
‫ﻃﺮاﺣﯽ‪ ،‬ﺗﻮﻟﯿﺪ‪ ،‬اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ‬
‫آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ‬

‫ﻧﻤﻮﻧﻪ ﺑﺮﻧﺎﻣﻪ )‪:(٣‬‬


‫ﺑﺮﻧﺎﻣﻪﺍﻱ ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ‪LED‬ﻫﺎﻱ ﻣﺘﺼﻞ ﺑﻪ ﭘﻮﺭﺕ ﻳﻚ‪ ،‬ﺩﺭ ﺑﺮﺩ ﺁﻣﻮﺯﺷﻲ ﺭﺍ ﺑﺎ ﺳﺮﻋﺖ ﺣﺪﻭﺩﻱ‬

‫‪r‬‬
‫ﻳﻚ ﺗﺎ ﺩﻭ ﺛﺎﻧﻴﻪ ﺧﺎﻣﻮﺵ ﻭ ﺭﻭﺷﻦ ﻛﻨﺪ‪.‬‬

‫‪.i‬‬
‫‪s‬‬
‫‪COUNT1 EQU 20H‬‬

‫‪r‬‬
‫‪COUNT2 EQU 21H‬‬

‫‪e‬‬
‫‪COUNT3 EQU 22H‬‬

‫‪k‬‬
‫‪MAIN:‬‬
‫‪MOV P1,#0FFH‬‬

‫‪a‬‬
‫ﺍﻳﻦ ﺩﺳﺘﻮﺭ ﺑﺎﻋﺚ ﻣﻲﺷﻮﺩ ﺗﻤﺎﻡ ‪ LED‬ﻫﺎﻱ ﺭﻭﻱ ﻣﺘﺼﻞ ﺑﻪ ﭘﻮﺭﺕ ‪ P1‬ﺧﺎﻣﻮﺵ ﺷﻮﻧﺪ )ﭼﻮﻥ ﺍﻳﻦ ‪LED‬‬
‫‪lM‬‬

‫ﻫﺎ ﺑﻪ ﺻﻮﺭﺕ ﺁﻧﺪ ﻣﺸﺘﺮﻙ ﺑﺴﺘﻪ ﺷﺪﻩﺍﻧﺪ‪(.‬‬


‫‪o‬‬

‫‪CALL DELAY‬‬
‫‪tr‬‬

‫ﺣﺪﻭﺩ ﻳﻚ ﺛﺎﻧﻴﻪ ﺗﺄﺧﻴﺮ‬


‫‪n‬‬

‫‪MOV P1,#0H‬‬
‫‪o‬‬

‫ﺭﻭﺷﻦ ﻛﺮﺩﻥ ‪LED‬ﻫﺎ‬


‫‪.C‬‬

‫‪CALL DELAY‬‬
‫‪w‬‬

‫ﻳﻚ ﺛﺎﻧﻴﻪ ﺗﺄﺧﻴﺮ‬


‫‪w‬‬

‫‪JMP MAIN‬‬
‫ﭘﺮﺵ ﺑﻪ ﺍﺑﺘﺪﺍﻱ ‪MAIN‬‬
‫‪w‬‬

‫‪DELAY:‬‬
‫‪MOV COUNT2,#255‬‬
‫‪MOV COUNT3,#10‬‬
‫‪LOOP3:‬‬
‫‪MOV COUNT2,#255‬‬
‫ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش‬
‫اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ‬
‫ﻃﺮاﺣﯽ‪ ،‬ﺗﻮﻟﯿﺪ‪ ،‬اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ‬
‫آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ‬

‫‪LOOP2:‬‬
‫‪MOV COUNT1,#255‬‬
‫‪LOOP1: DJNZ COUNT1,LOOP1‬‬

‫‪r‬‬
‫‪DJNZ COUNT2,LOOP2‬‬

‫‪.i‬‬
‫‪DJNZ COUNT3,LOOP3‬‬

‫‪s‬‬
‫‪RET‬‬

‫‪r‬‬
‫‪END‬‬

‫‪e‬‬
‫‪k‬‬
‫ﺩﺳﺘﻮﺭ ‪:CALL‬‬

‫‪a‬‬
‫ﺩﺭ ﺑﺮﻧﺎﻣﻪ ﻓﻮﻕ ﭼﻮﻥ ﺯﻳﺮ ﺭﻭﺍﻝ ‪ DELAY‬ﺗﻜﺮﺍﺭ ﺷﺪﻩ ﺑﻮﺩ ﻣﺎ ﺍﺯ ﺗﻜﺮﺍﺭ ﺁﻥ ﺧﻮﺩﺩﺍﺭﻱ ﻛﺮﺩﻳﻢ ﻭ ﺍﺯ‬
‫‪lM‬‬
‫ﺩﺳﺘﻮﺭ ‪ CALL‬ﺍﺳﺘﻔﺎﺩﻩ ﻛﺮﺩﻳﻢ ﺩﺭ ﻫﻨﮕﺎﻡ ﺍﻧﺠﺎﻡ ﺍﻳﻦ ﺩﺳﺘﻮﺭ ﺑﺮﺍﻱ ﺯﻳﺮ ﺑﺮﻧﺎﻣﻪ ‪ CPU ، DELAY‬ﺑﻪ‬
‫‪o‬‬

‫ﺍﺑﺘﺪﺍﻱ ﺑﺮﻧﺎﻣﻪ ‪ DELAY‬ﺭﻓﺘﻪ ﻭ ﺁﻥ ﺭﺍ ﺍﺟﺮﺍ ﻣﻲﻛﻨﺪ ﺗﺎ ﺑﻪ ﺩﺳﺘﻮﺭ ‪ RET‬ﺑﺮﺳﺪ‪ .‬ﭘﺲ ﺍﺯ ﺍﻧﺠﺎﻡ ﻛﺎﻣﻞ ﺍﻳﻦ‬
‫‪tr‬‬

‫ﻣﺮﺣﻠﻪ ﻭ ﺭﺳﻴﺪﻥ ﺑﻪ ﺩﺳﺘﻮﺭ ‪ RET‬ﺍﺯ ﺯﻳﺮ ﺑﺮﻧﺎﻣﻪ‪ DELAY ،‬ﺑﺮﮔﺸﺘﻪ ﻭ ﻛﺎﺭ ﺧﻮﺩ ﺭﺍ ﺑﻌﺪ ﺍﺯ ﺩﺳﺘﻮﺭ‬
‫‪n‬‬

‫‪ CALL‬ﺍﺩﺍﻣﻪ ﻣﻲﺩﻫﺪ‪ .‬ﺷﻤﺎ ﺑﺎ ﺭﻭﺵﻫﺎﻱ ﻣﺸﺎﺑﻪ ﻣﻲﺗﻮﺍﻧﻴﺪ ﺑﻪ ﺻﻮﺭﺕ ﺗﻘﺮﻳﺒﻲ ﺗﺄﺧﻴﺮ ﻣﻮﺭﺩ ﻧﻈﺮ ﺧﻮﺩ ﺭﺍ‬
‫‪o‬‬
‫‪.C‬‬

‫ﺩﺭ ﻛﻨﺘﺮﻟﺮﻫﺎ ﺍﻋﻤﺎﻝ ﻧﻤﺎﻳﻴﺪ‪ ،‬ﻭﻟﻲ ﺑﺮﺍﻱ ﺍﻳﺠﺎﺩ ﺗﺄﺧﻴﺮﻫﺎﻱ ﺩﻗﻴﻖﺗﺮ ﺩﺭ ﺍﺟﺮﺍﻱ ﺑﺮﻧﺎﻣﻪ ﻣﻲﺗﻮﺍﻧﻴﺪ ﺍﺯ ‪TIMER‬‬
‫‪w‬‬

‫ﻫﺎ )ﻛﻪ ﺩﺭ ﺍﺩﺍﻣﻪ ﺑﻪ ﺑﺤﺚ ﺩﺭ ﻣﻮﺭﺩ ﺁﻥﻫﺎ ﻣﻲﭘﺮﺩﺍﺯﻳﻢ( ﺍﺳﺘﻔﺎﺩﻩ ﻛﻨﻴﺪ‪.‬‬


‫‪w‬‬
‫‪w‬‬
‫ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش‬
‫اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ‬
‫ﻃﺮاﺣﯽ‪ ،‬ﺗﻮﻟﯿﺪ‪ ،‬اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ‬
‫آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ‬

‫ﺍﺳﺘﻔﺎﺩﻩ ﺩﺳﺘﻮﺭﺍﺕ ﺑﻴﺘﻰ ﺩﺭ ﻣﻴﮑﺮﻭﮐﻨﺘﺮﻟﺮ‪:‬‬


‫ﻫﻤﺎﻥﻃﻮﺭ ﻛﻪ ﻣﻼﺣﻈﻪ ﻧﻤﻮﺩﻳﺪ ‪ 8051‬ﺩﺳﺘﻮﺭﺍﺗﻲ ﺟﻬﺖ ﻛﺎﺭ ﺭﻭﻱ ﺑﺎﻳﺖﻫﺎﻱ ﺣﺎﻓﻈﻪ ﺩﺍﺭﺩ‪ .‬ﺗﻮﺟﻪ‬

‫‪r‬‬
‫ﺩﺍﺷﺘﻪ ﺑﺎﺷﻴﺪ ﺷﻤﺎ ﺗﻮﺳﻂ ﺩﺳﺘﻮﺭﺍﺕ ﺑﺎﻳﺘﻲ ﻧﻤﻲﺗﻮﺍﻧﻴﺪ ﺭﻭﻱ ﻳﻚ ﺧﺎﻧﻪ ﺍﺯ ﺑﻴﺖ ﺣﺎﻓﻈﻪ ﻛﺎﺭ ﻛﻨﻴﺪ ﺟﻬﺖ‬

‫‪.i‬‬
‫‪s‬‬
‫ﻛﺎﺭ ﺑﺎ ﺑﻴﺖﻫﺎ ﻣﻲﺗﻮﺍﻧﻴﺪ ﺍﺯ ﺩﺳﺘﻮﺭﺍﺕ ﺑﻴﺘﻲ ﺯﻳﺮ ﺍﺳﺘﻔﺎﺩﻩ ﻧﻤﺎﻳﻴﺪ‪.‬‬

‫‪r‬‬
‫‪SETB‬‬

‫‪e‬‬
‫‪k‬‬
‫ﻳﻚ ﺑﻴﺖ ﺭﺍ ﻳﻚ ﻛﺮﺩﻩ‬

‫‪a‬‬
‫‪SETB P1.0‬‬
‫‪lM‬‬
‫ﺑﻴﺖ ﺻﻔﺮ ﺍﺯ ﺑﺎﻳﺖ ‪ P1‬ﺭﺍ ﻳﻚ ﻛﺮﺩﻩ ﻭ ﺗﺄﺛﻴﺮﻱ ﺭﻭﻱ ﺑﻘﻴﻪ ﺑﻴﺖﻫﺎ ﻧﺪﺍﺭﺩ‪.‬‬
‫‪o‬‬

‫‪P1‬‬
‫‪tr‬‬

‫‪X‬‬ ‫‪X‬‬ ‫‪X‬‬ ‫‪X‬‬ ‫‪X‬‬ ‫‪X‬‬ ‫‪X‬‬ ‫‪1‬‬


‫‪n‬‬

‫‪D7 D6 D5 D4 D3 D2 D1 D0‬‬
‫‪o‬‬

‫‪CLR‬‬
‫‪.C‬‬

‫ﻳﻚ ﺑﻴﺖ ﺭﺍ ﺻﻔﺮ ﻛﺮﺩﻩ‬


‫‪w‬‬

‫‪CLR P0.5‬‬
‫‪w‬‬

‫ﺑﻴﺖ ﭘﻨﺠﻢ ﺍﺯ ﺑﺎﻳﺖ ‪ P0‬ﺭﺍ ﺻﻔﺮ ﻛﺮﺩﻩ ﻭ ﺗﺎﺛﻴﺮﻱ ﺭﻭﻱ ﺑﻘﻴﻪ ﺑﻴﺖﻫﺎ ﻧﺪﺍﺭﺩ‪.‬‬
‫‪w‬‬

‫‪P0‬‬
‫‪X‬‬ ‫‪X‬‬ ‫‪0‬‬ ‫‪X‬‬ ‫‪X‬‬ ‫‪X‬‬ ‫‪X‬‬ ‫‪X‬‬
‫‪D7 D6 D5 D4 D3 D2 D1 D0‬‬

‫‪JNB‬‬
‫ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش‬
‫اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ‬
‫ﻃﺮاﺣﯽ‪ ،‬ﺗﻮﻟﯿﺪ‪ ،‬اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ‬
‫آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ‬

‫ﭘﺮﺵ ﺩﺭ ﺻﻮﺭﺕ ﻳﻚ ﻧﺒﻮﺩﻥ‬

‫‪JB‬‬

‫‪r‬‬
‫‪.i‬‬
‫ﭘﺮﺵ ﺩﺭ ﺻﻮﺭﺕ ﻳﻚ ﺑﻮﺩﻥ‬

‫‪s‬‬
‫‪JNB P1.2,LOOP‬‬

‫‪r‬‬
‫‪e‬‬
‫ﺍﻳﻦ ﺩﺳﺘﻮﺭ ﺑﻴﺖ ﺩﻭﻡ ﺑﺎﻳﺖ ‪ P1‬ﺭﺍ ﺑﺮﺭﺳﻲ ﻣﻲﻛﻨﺪ‪ ،‬ﺍﮔﺮ ﺍﻳﻦ ﭘﺎﻳﻪ ﺍﺯ ﺑﻴﺮﻭﻥ ‪ GND‬ﺷﺪﻩ ﺑﻮﺩ ﺑﻪ‬

‫‪k‬‬
‫‪ LOOP‬ﭘﺮﺵ ﻛﺮﺩﻩ ﺩﺭ ﻏﻴﺮ ﺍﻳﻦﺻﻮﺭﺕ ﺑﺮﻧﺎﻣﻪ ﺍﺯ ﺧﻂ ﺑﻌﺪﻱ ﺍﺩﺍﻣﻪ ﺧﻮﺍﻫﺪ ﻳﺎﻓﺖ‪ .‬ﺑﻴﺸﺘﺮﻳﻦ ﻛﺎﺭﺑﺮﺩ ﺍﻳﻦ‬

‫‪a‬‬
‫‪lM‬‬
‫ﺩﻭ ﺩﺳﺘﻮﺭ ﺑﺮﺍﻱ ﭼﻚ ﻛﺮﺩﻥ ﻛﻠﻴﺪ ﺍﺳﺖ ﻛﻪ ﺩﺭ ﺍﺩﺍﻣﻪ ﻳﻚ ﻣﺜﺎﻝ ﺑﺮﺍﻱ ﺭﻭﺷﻦ ﺷﺪﻥ ﻣﻮﺿﻮﻉ ﺁﻭﺭﺩﻩ ﺷﺪﻩ‬

‫ﺍﺳﺖ‪.‬‬
‫‪o‬‬
‫‪tr‬‬

‫ﻧﻤﻮﻧﻪ ﺑﺮﻧﺎﻣﻪ )‪:(٤‬‬


‫‪n‬‬

‫ﺑﺮﻧﺎﻣﻪﺍﻱ ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﺑﺎ ﺯﺩﻥ ﻛﻠﻴﺪ ‪ P3.3‬ﻋﺪﺩ ‪ 55H‬ﺭﻭﻱ ‪ P1‬ﻗﺮﺍﺭ ﺑﮕﻴﺮﺩ ﻭﺑﺎ ﺯﺩﻥ ﻛﻠﻴﺪ ‪P3.5‬‬
‫‪o‬‬

‫ﻋﺪﺩ ‪ AAH‬ﺭﻭﻱ‪ P1‬ﻗﺮﺍﺭ ﺑﮕﻴﺮﺩ‪.‬‬


‫‪.C‬‬

‫‪ORG 00H‬‬
‫‪w‬‬

‫‪SCAN:‬‬
‫‪w‬‬

‫‪JNB‬‬ ‫‪P3.3,NUM1‬‬
‫‪JNB‬‬ ‫‪P3.5,NUM2‬‬
‫‪w‬‬

‫‪JMP SCAN‬‬

‫‪NUM1:‬‬
‫‪MOV‬‬ ‫‪P1,#55H‬‬
‫‪JMP‬‬ ‫‪SCAN‬‬

‫‪NUM2:‬‬
‫ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش‬
‫اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ‬
‫ﻃﺮاﺣﯽ‪ ،‬ﺗﻮﻟﯿﺪ‪ ،‬اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ‬
‫آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ‬

‫‪MOV‬‬ ‫‪P1,#0AAH‬‬
‫‪JMP‬‬ ‫‪SCAN‬‬

‫‪r‬‬
‫‪END‬‬

‫‪.i‬‬
‫‪s‬‬
‫‪r‬‬
‫‪e‬‬
‫‪k‬‬
‫‪a‬‬
‫‪lM‬‬
‫‪o‬‬
‫‪tr‬‬
‫‪n‬‬
‫‪o‬‬
‫‪.C‬‬
‫‪w‬‬
‫‪w‬‬
‫‪w‬‬
‫ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش‬
‫اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ‬
‫ﻃﺮاﺣﯽ‪ ،‬ﺗﻮﻟﯿﺪ‪ ،‬اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ‬
‫آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ‬

‫‪TIMER‬‬

‫ﺩﺭ ﻣﻴﻜﺮﻭﻛﻨﺘﺮﻟﺮ‪ 89C51‬ﺩﻭ ‪ TIMER‬ﺑﻪﺻﻮﺭﺕ ﺳﺨﺖﺍﻓﺰﺍﺭﻱ ﻭﺟﻮﺩ ﺩﺍﺭﺩ ﻛﻪ ﻣﺎ ﺗﻮﺳﻂ ﺁﻥﻫﺎ‬

‫‪r‬‬
‫‪.i‬‬
‫ﻣﻲﺗﻮﺍﻧﻴﻢ ﻭﻗﺎﻳﻊ ﻣﺨﺘﻠﻒ ﺭﺍ ﺷﻤﺎﺭﺵ ﻛﻨﻴﻢ ﻣﺎﻧﻨﺪ ﺷﻤﺎﺭﺵ ﺳﻴﻜﻞﻫﺎﻱ ﻣﺎﺷﻴﻦ ﻛﻪ ﺩﺭ ﺍﻳﻦﺻﻮﺭﺕ‬

‫‪s‬‬
‫ﻣﻲﺗﻮﺍﻧﻴﻢ ﺯﻣﺎﻥ ﺭﺍ ﻣﺤﺎﺳﺒﻪ ﻧﻤﺎﻳﻴﻢ‪.‬‬

‫‪r‬‬
‫‪e‬‬
‫ﺍﺻﻮﻝ ﻛﺎﺭ ﺗﺎﻳﻤﺮ ﺷﻤﺎﺭﺵ ﺭﻭ ﺑﻪ ﺑﺎﻻ ﺩﺭ ﻳﻚ ﺳﻴﻜﻞ ﻣﺎﺷﻴﻦ ﺍﺳﺖ‪ .‬ﺑﺮﺍﻱ ﺷﻤﺎﺭﺵ‪ ،‬ﺩﻭﺑﺎﻳﺖ ﺑﻪ ﻧﺎﻡﻫﺎﻱ‬

‫‪k‬‬
‫‪ THX‬ﻭ ‪ TLX‬ﻭﺟﻮﺩ ﺩﺍﺭﺩ ﻛﻪ ﺩﺭ ﻣﺠﻤﻮﻉ ﺑﻪ ﺻﻮﺭﺕ ‪ ١٦‬ﺑﻴﺖ ﻛﻨﺎﺭ ﻫﻢ ﻗﺮﺍﺭ ﻣﻲﮔﻴﺮﻧﺪ‪.‬‬

‫‪a‬‬
‫‪lM‬‬
‫‪TH‬‬ ‫‪TL‬‬
‫‪8‬‬ ‫‪7‬‬ ‫‪6‬‬ ‫‪5‬‬ ‫‪4‬‬ ‫‪3‬‬ ‫‪2‬‬ ‫‪1‬‬ ‫‪8‬‬ ‫‪7‬‬ ‫‪6‬‬ ‫‪5‬‬ ‫‪4‬‬ ‫‪3‬‬ ‫‪2‬‬ ‫‪1‬‬
‫‪o‬‬
‫‪tr‬‬

‫ﺩﺭ ‪ 89C51‬ﺩﻭ ﺗﺎﻳﻤﺮ ﻭﺟﻮﺩ ﺩﺍﺭﺩ ﻛﻪ ﺣﺎﻟﺖﻫﺎﻱ ﻣﺨﺘﻠﻔﻲ ﺭﺍ ﻣﻲﺗﻮﺍﻧﻨﺪ ﺩﺍﺷﺘﻪ ﺑﺎﺷﻨﺪ ﻛﻪ ﺩﺭ ﺑﺎﻳﺖ‬
‫‪n‬‬

‫‪ TMOD‬ﺍﻧﺘﺨﺎﺏ ﻣﻲﺷﻮﻧﺪ‪.‬‬
‫‪o‬‬
‫‪.C‬‬

‫‪TIMER 1‬‬ ‫‪TIMER 0‬‬


‫‪w‬‬

‫‪GATE‬‬ ‫‪CT‬‬ ‫‪M1‬‬ ‫‪M0‬‬ ‫‪GATE‬‬ ‫‪CT‬‬ ‫‪M1‬‬ ‫‪MO‬‬


‫‪w‬‬

‫‪ M0‬ﻭ ‪ M1‬ﺩﺭ ‪ ، Tmod‬ﺣﺎﻟﺖ ﻛﺎﺭ ﺗﺎﻳﻤﺮ ﺭﺍ ﻣﻄﺎﺑﻖ ﺟﺪﻭﻝ ﺯﻳﺮ ﻣﺸﺨﺺ ﻣﻲﻛﻨﻨﺪ‪.‬‬
‫‪w‬‬

‫‪M1‬‬ ‫‪M0‬‬ ‫ﻧﺤﻮﻩ ﻛﺎﺭ ﺷﻤﺎﺭﺵ‬ ‫ﺣﺎﻟﺖ‬

‫‪0‬‬ ‫‪0‬‬ ‫‪ ١٣‬ﺑﻴﺘﻲ‬ ‫‪0‬‬

‫‪0‬‬ ‫‪1‬‬ ‫‪ ١٦‬ﺑﻴﺘﻲ‬ ‫‪1‬‬


‫ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش‬
‫اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ‬
‫ﻃﺮاﺣﯽ‪ ،‬ﺗﻮﻟﯿﺪ‪ ،‬اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ‬
‫آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ‬

‫‪1‬‬ ‫‪0‬‬ ‫‪ ٨‬ﺑﻴﺘﻲ ﺑﺎ ﺑﺎﺭﮔﺰﺍﺭﻱ ﺧﻮﺩﻛﺎﺭ‬ ‫‪2‬‬

‫‪1‬‬ ‫‪1‬‬ ‫ﺩﺭ ﺍﻳﻦ ﺣﺎﻟﺖ ﺗﺎﻳﻤﺮ ﺑﻪ ﺩﻭ ﺗﺎﻳﻤﺮ ‪ ٨‬ﺑﻴﺘﻲ ﻣﺠﺰﺍ ﺗﺒﺪﻳﻞ ﻣﻲﺷﻮﺩ‬ ‫‪3‬‬

‫‪r‬‬
‫‪.i‬‬
‫در ﺣﺎﻟﺖ ﺻﻔﺮ‪:‬‬

‫‪s‬‬
‫ﺳﻪ ﺑﻴﺖ ﺑﺎﻻﻱ )‪ (THX ,TLX‬ﻣﻮﺭﺩ ﺍﺳﺘﻔﺎﺩﻩ ﻗﺮﺍﺭ ﻧﻤﻲﮔﻴﺮﻧﺪ ﻭ ﺣﺪﺍﻛﺜﺮ ﺗﺎ ﻋﺪﺩ ‪٢١٣ = ٨١٩٢‬‬

‫‪r‬‬
‫‪e‬‬
‫ﻣﻲﺗﻮﺍﻧﺪ ﺷﻤﺎﺭﺵ ﻛﻨﺪ‪.‬‬

‫‪k‬‬
‫در ﺣﺎﻟﺖ ﯾﮏ‪:‬‬

‫‪a‬‬
‫ﺗﻤﺎﻡ )‪ ١٦‬ﺑﻴﺖ ‪ (THX,TLX‬ﻣﻮﺭﺩ ﺍﺳﺘﻔﺎﺩﻩ ﻗﺮﺍﺭ ﮔﺮﻓﺘﻪ ﻭ ‪ TIMER‬ﺣﺪﺍﻛﺜﺮ ﺗﺎ ﻋﺪﺩ ‪= ٦٥٥٣٥‬‬
‫‪lM‬‬

‫‪ ٢١٦‬ﻣﻲﺗﻮﺍﻧﺪ ﺷﻤﺎﺭﺵ ﻧﻤﺎﻳﺪ‪.‬‬


‫‪o‬‬

‫در ﺣﺎﻟﺖ دو‪:‬‬


‫‪tr‬‬

‫ﻓﻘﻂ ‪ ٨‬ﺑﻴﺖ ﭘﺎﻳﻴﻦ ﺷﻤﺎﺭﺵ ﺷﺪﻩ ﻭ ‪ ٨‬ﺑﻴﺖ ﺑﺎﻻ ﺑﻪ ﻋﻨﻮﺍﻥ ‪ BACKUP‬ﻣﻘﺪﺍﺭ ‪ ٨‬ﺑﻴﺖ ﭘﺎﻳﻴﻦ ﻣﻮﺭﺩ‬
‫‪n‬‬

‫ﺍﺳﺘﻔﺎﺩﻩ ﻗﺮﺍﺭ ﻣﻲﮔﻴﺮﺩ‪ .‬ﺩﺭ ﺍﻳﻦ ﺣﺎﻟﺖ ﺗﺎﻳﻤﺮ ﺣﺪﺍﻛﺜﺮ ﺗﺎ ﻋﺪﺩ ‪ ٢٨ = ٢٥٥‬ﻣﻲﺗﻮﺍﻧﺪ ﺷﻤﺎﺭﺵ ﻧﻤﺎﻳﺪ‪.‬‬
‫‪o‬‬
‫‪.C‬‬

‫در ﺣﺎﻟﺖ ﺳﻪ‪:‬‬


‫ﺗﺎﻳﻤﺮ ﺑﻪ ﺻﻮﺭﺕ ﺩﻭ ﺗﺎﻳﻤﺮ ‪ ٨‬ﺑﻴﺘﻲ ﻣﺠﺰﺍ ﻛﺎﺭ ﻣﻲﻛﻨﺪ‪.‬‬
‫‪w‬‬

‫ﺩﺭ ﺣﺎﻟﺖﻫﺎﻱ ﻓﻮﻕ ﭼﻨﺎﻧﭽﻪ ﺷﻤﺎﺭﺵ ﺍﺩﺍﻣﻪ ﺩﺍﺷﺘﻪ ﺑﺎﺷﺪ ﺗﺎ ﺑﻪ ﻣﻘﺪﺍﺭ ﺣﺪﺍﻛﺜﺮ ﺩﺭ ﻫﺮ ﺣﺎﻟﺖ ﺑﺮﺳﺪ‬
‫‪w‬‬

‫ﺑﻌﺪ ﺍﺯ ﻳﻚ ﺷﻤﺎﺭﺵ ﺩﻳﮕﺮ ﺳﺮﺭﻳﺰ ﺭﺥ ﺩﺍﺩﻩ ﻳﻌﻨﻲ ﺩﻭﺑﺎﺭﻩ ﺗﻤﺎﻡ ﺑﻴﺖﻫﺎ ﺻﻔﺮ ﺷﺪﻩ ﻭ ﭘﺮﭼﻤﻲ ﺑﻪ ﻧﺎﻡ ‪TFx‬‬
‫‪w‬‬

‫ﻓﻌﺎﻝ ﻣﻲﺷﻮﺩ ﻭ ﻛﺎﺭ ﺍﺩﺍﻣﻪ ﻣﻲﻳﺎﺑﺪ‪.‬‬


‫ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش‬
‫اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ‬
‫ﻃﺮاﺣﯽ‪ ،‬ﺗﻮﻟﯿﺪ‪ ،‬اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ‬
‫آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ‬

‫ﻧﮑﺘﻪ‪ :‬ﺟﻬﺖ ﺷﺮﻭﻉ ﻛﺎﺭ ﺗﺎﻳﻤﺮ ﺍﺑﺘﺪﺍ ﺑﺎﻳﺪ ﺑﻴﺖ ‪ TRx‬ﺭﺍ ﻳﻚ ﻛﺮﺩ ﻭ ﺑﺎ ﺻﻔﺮ ﻛﺮﺩﻥ ﺁﻥ ﻣﻲﺗﻮﺍﻥ ﺍﺯ‬

‫ﺷﻤﺎﺭﺵ ﺗﺎﻳﻤﺮ ﺟﻠﻮﮔﻴﺮﻱ ﻛﺮﺩ‪ .‬ﻣﺎ ﺑﺎ ﺑﺎﺭﮔﺬﺍﺭﻱ ﻋﺪﺩﻱ ﻣﻨﺎﺳﺐ ﻣﻲﺗﻮﺍﻧﻴﻢ ﺯﻣﺎﻥ ﺳﺮﺭﻳﺰ ﺭﺍ ﻛﻨﺘﺮﻝ ﻛﺮﺩﻩ ﻭ‬

‫‪r‬‬
‫‪.i‬‬
‫ﺗﺄﺧﻴﺮ ﺯﻣﺎﻧﻲ ﻣﻮﺭﺩ ﻧﻈﺮ ﺭﺍ ﺍﻳﺠﺎﺩ ﻧﻤﺎﻳﻴﻢ‪.‬‬

‫‪s‬‬
‫‪r‬‬
‫‪:CT‬‬

‫‪e‬‬
‫‪k‬‬
‫ﺟﻬﺖ ﺗﻌﻴﻴﻦ ﺣﺎﻟﺖ ﻛﺎﺭ ﺑﻪ ﺻﻮﺭﺕ ﺗﺎﻳﻤﺮ ﻳﺎ ﻛﻨﺘﻮﺭ ﺍﺳﺖ ﺍﮔﺮ ﺍﻳﻦ ﺑﻴﺖ ﺻﻔﺮ ﺑﺎﺷﺪ ﭘﺎﻟﺴﻬﺎﻱ‬

‫‪a‬‬
‫ﺷﻤﺎﺭﺵ ﺍﺯ ﻧﻮﺳﺎﻥ ﺳﺎﺯ ﮔﺮﻓﺘﻪ ﻣﻴﺸﻮﺩ ﺑﺼﻮﺭﺗﻲ ﻛﻪ ﺑﻪ ﺍﺯﺍﻱ ﻫﺮ ﺳﻴﻜﻞ ﻳﻚ ﺷﻤﺎﺭﺵ ﺧﻮﺍﻫﻴﻢ ﺩﺍﺷﺖ ﺩﺭ‬
‫‪lM‬‬
‫ﺣﺎﻟﺖ ﻣﻲﮔﻮﺋﻴﻢ ﺩﺭﺣﺎﻟﺖ ﺗﺎﻳﻤﺮ ﻗﺮﺍﺭ ﮔﺮﻓﺘﻪ ﺍﺳﺖ ﺯﻳﺮﺍ ﺑﻪ ﺍﺯﺍﻱ ﻳﻚ ﻣﻴﻜﺮﻭ ﺛﺎﻧﻴﻪ ﻳﻚ ﺷﻤﺎﺭﺵ ﺭﻭﺑﻪ ﺑﺎﻻ‬
‫‪o‬‬

‫ﺧﻮﺍﻫﻴﻢ ﺩﺍﺷﺖ)ﺩﺭﺻﻮﺭﺗﻲ ﻛﻪ ﻛﺮﻳﺴﺘﺎﻝ ‪ 12MHZ‬ﺍﺳﺘﻔﺎﺩﻩ ﺷﺪﻩ ﺑﺎﺷﺪ( ﻛﻪ ﺩﺭ ﺁﻳﻨﺪﻩ ﺩﺭ ﻣﻮﺭﺩ ﺁﻥ ﺑﺤﺚ‬


‫‪tr‬‬

‫ﺧﻮﺍﻫﻴﻢ ﻛﺮﺩ ﻭ ﺍﮔﺮ ﺍﻳﻦ ﺑﻴﺖ ﺩﺭ ﻭﺿﻌﻴﺖ ﻳﻚ ﻗﺮﺍﺭ ﮔﻴﺮﺩ ﺩﻳﮕﺮ ﭘﺎﻟﺴﻬﺎﻱ ﺷﻤﺎﺭﺵ ﺭﺍ ﺍﺯ ﻛﺮﻳﺴﺘﺎﻝ‬
‫‪n‬‬

‫ﺩﺭﻳﺎﻓﺖ ﻧﻤﻲﻛﻨﺪ ﺑﻠﻜﻪ ﻳﻜﻲ ﺍﺯ ﭘﺎﻳﻪ ﻫﺎﻱ ﭘﻮﺭﺕ ﺳﻮﻡ ﻭﺭﻭﺩﻱ ﺍﻳﻦ ﭘﺎﻟﺴﻬﺎ ﺍﺯ ﺧﺎﺭﺝ ﻗﺮﺍﺭ ﻣﻲﮔﻴﺮﺩﻛﻪ ﺑﻪ‬
‫‪o‬‬
‫‪.C‬‬

‫ﺍﻳﻦ ﺣﺎﻟﺖ ﺷﻤﺎﺭﻧﺪﻩ ﻣﻲﮔﻮﺋﻴﻢ ﻭ ﻣﻌﻤﻮ ﹰﻻ ﺑﺮﺍﻱ ﺷﻤﺎﺭﺵ ﻳﻚ ﺭﻭﻳﺪﺍﺩ ﺧﺎﺭﺝ ﺍﺯ ﻣﻴﻜﺮﻭ ﺍﺳﺘﻔﺎﺩﻩ ﻣﻲﺷﻮﺩ‪.‬‬

‫ﻧﻜﺘﻪ ‪:‬ﺩﺭ ﺣﺎﻟﺖ ﺷﻤﺎﺭﻧﺪﻩ ﭘﺎﻟﺴﻬﺎ ﺍﺯ ﭘﺎﻳﻪ ﻫﺎﻱ ‪ T0‬ﻭ‪ T1‬ﺩﺭﻳﺎﻓﺖ ﻣﻴﺸﻮﻧﺪ‪.‬‬
‫‪w‬‬

‫‪:GATE‬‬
‫‪w‬‬

‫ﺍﻳﻦ ﺑﻴﺖ ﺑﺮﺍﻱ ﺗﺎﻳﻤﺮ ﻣﺸﺨﺺ ﻣﻲﻛﻨﺪ ﻛﻪ ﺩﺭ ﭼﻪ ﺯﻣﺎﻧﻲ ﺷﺮﻭﻉ ﺑﻪ ﻛﺎﺭ ﻧﻤﺎﻳﺪ‪ .‬ﺍﮔﺮ ﺻﻔﺮ ﺑﺎﺷﺪ ﺩﺭ‬
‫‪w‬‬

‫ﺻﻮﺭﺕ ﻳﻚ ﺷﺪﻥ ‪ TR‬ﺷﺮﻭﻉ ﺑﻪ ﻛﺎﺭ ﻣﻲﻛﻨﺪ ﻭ ﺍﮔﺮ ﻳﻚ ﺑﺎﺷﺪ ﺩﺭ ﺻﻮﺭﺕ ﻳﻚ ﺷﺪﻥ ‪ TR‬ﻭ ﻧﻴﺰ ﻳﻚ‬

‫ﺷﺪﻥ ﭘﺎﻳﻪ ‪ INT‬ﺷﺮﻭﻉ ﺑﻪ ﻛﺎﺭ ﻣﻲﻛﻨﺪ ﻭ ﺍﮔﺮ ﻳﻜﻲ ﺍﺯ ﺁﻥﻫﺎ )‪ TR‬ﻭ ﻳﺎ ‪ (INT‬ﺻﻔﺮ ﺷﻮﺩ ﺗﺎﻳﻤﺮ ‪STOP‬‬

‫ﺧﻮﺍﻫﺪ ﻛﺮﺩ‪.‬‬
‫ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش‬
‫اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ‬
‫ﻃﺮاﺣﯽ‪ ،‬ﺗﻮﻟﯿﺪ‪ ،‬اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ‬
‫آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ‬

‫ﺑﺮﺍﻯ ﻧﻮﺷﺘﻦ ﺑﺮﻧﺎﻣﻪ ﺗﺎﻳﻤﺮ ﺑﻪ ﺗﺮﺗﻴﺐ ﺯﻳﺮ ﻋﻤﻞ ﻣﻰﮐﻨﻴﻢ‪:‬‬


‫‪ -١‬ﺑﺎﺭﮔﺬﺍﺭﻱ ﺛﺒﺎﺕ ‪ TMOD‬ﻳﻌﻨﻲ ﺍﻳﻨﻜﻪ ﻛﺪﺍﻡ ﺗﺎﻳﻤﺮ ﺭﺍ ﺍﻧﺘﺨﺎﺏ ﻣﻲﻛﻨﻴﻢ ﻭﺩﺭ ﭼﻪ ﺣﺎﻟﺘﻲ‬

‫‪r‬‬
‫‪.i‬‬
‫‪) MOV‬ﻣﺜﺎﻝ‬ ‫‪TMOD,#10H‬‬

‫‪s‬‬
‫‪r‬‬
‫‪ -٢‬ﺑﺎﺭﮔﺬﺍﺭﻱ ﺗﺎﺧﻴﺮ ﻣﻮﺭﺩ ﻧﻈﺮ ﺩﺭ ‪TH X , TL X‬‬

‫‪e‬‬
‫‪) Mov‬ﻣﺜﺎﻝ‬ ‫‪TH1,#6CH‬‬

‫‪k‬‬
‫‪a‬‬
‫‪Mov‬‬ ‫‪TL1,#0C0H‬‬
‫‪lM‬‬
‫‪ -٣‬ﺭﻭﺷﻦ ﻛﺮﺩﻥ ﺗﺎﻳﻤﺮ ﺑﺎ ﺩﺳﺘﻮﺭ ‪SETB TR X‬‬

‫‪) SETB‬ﻣﺜﺎﻝ‬ ‫‪TR1‬‬


‫‪o‬‬
‫‪tr‬‬

‫‪ -٤‬ﭼﻚ ﻛﺮﺩﻥ ﺑﻴﺖ ‪ TFX‬ﻛﻪ ﭼﻪ ﻣﻮﻗﻊ ﻳﻚ ﺷﺪﻩ ﺍﺳﺖ ﻳﻌﻨﻲ ﺷﻤﺎﺭﺵ ﺑﻪ ﻋﺪﺩ ﺳﺮﺭﻳﺰ ﺭﺳﻴﺪﻩ‬
‫‪n‬‬

‫ﺍﺳﺖ‪.‬‬
‫‪o‬‬

‫‪)LOOP: JNB‬ﻣﺜﺎﻝ‬ ‫‪TF1,LOOP‬‬


‫‪.C‬‬

‫‪ -٥‬ﭘﺎﻙ ﻛﺮﺩﻥ ‪TFX‬‬


‫‪w‬‬

‫‪) CLR‬ﻣﺜﺎﻝ‬ ‫‪TF1‬‬


‫‪ -٦‬ﺧﺎﻣﻮﺵ ﻛﺮﺩﻥ ﺗﺎﻳﻤﺮ ‪TR X‬‬
‫‪w‬‬

‫‪)CLR‬ﻣﺜﺎﻝ‬ ‫‪TR1‬‬
‫‪w‬‬

‫ﺣﺎﻝ ﺑﻪ ﺗﺮﺗﻴﺒﻲ ﻛﻪ ﮔﻔﺘﻪ ﺷﺪ ﺑﺮﻧﺎﻣﻪﺍﻱ ﺑﺮﺍﻱ ﺍﻳﺠﺎﺩ ‪ ٥٠‬ﻣﻴﻠﻲ ﺛﺎﻧﻴﻪ ﺗﺄﺧﻴﺮ ﻣﻲﻧﻮﻳﺴﻴﻢ‪.‬‬

‫‪DELAY:‬‬
‫‪MOV TMOD,#01H‬‬
‫‪MOV TH0,#3CH‬‬
‫ﻣﻘﺪﺍﺭﺩﻫﻲ ‪ TIMER0‬ﺑﺎ ﻋﺪﺩ ‪ 3CB0H‬ﻳﺎ ‪ 15536‬ﺩﺳﻴﻤﺎﻝ‬
‫‪MOV TL0,#0B0H‬‬
‫ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش‬
‫اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ‬
‫ﻃﺮاﺣﯽ‪ ،‬ﺗﻮﻟﯿﺪ‪ ،‬اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ‬
‫آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ‬

‫‪SETB TR0‬‬
‫ﺑﺮﺭﺳﻲ ﭘﺮﭼﻢ ‪ Timer0‬ﺟﻬﺖ ﻳﻚ ﺷﺪﻥ ﺁﻥ‬
‫‪LOOP:JNB TF0,LOOP‬‬
‫‪CLR TF0‬‬

‫‪r‬‬
‫‪CLR TR0‬‬

‫‪.i‬‬
‫‪RET‬‬
‫ﺯﻳﺮ ﺑﺮﻧﺎﻣﻪ ﻓﻮﻕ ﺍﮔﺮ ‪ CALL‬ﺷﻮﺩ ‪ 50ms‬ﺗﺄﺧﻴﺮ ﺍﻳﺠﺎﺩ ﻣﻲﻛﻨﺪ‪.‬‬

‫‪s‬‬
‫‪r‬‬
‫ﺍﺑﺘﺪﺍ ‪ TMOD‬ﻣﻄﺎﺑﻖ ﺷﻜﻞ ﺯﻳﺮ ﺑﺎﺭﮔﺬﺍﺭﻱ ﺷﺪﻩ ﺍﺳﺖ‪.‬‬

‫‪e‬‬
‫‪k‬‬
‫‪TIMER 1‬‬ ‫‪TIMER 0‬‬

‫‪a‬‬
‫‪GATE‬‬ ‫‪CT‬‬ ‫‪M1‬‬ ‫‪M0‬‬ ‫‪GATE‬‬ ‫‪CT‬‬ ‫‪M1‬‬ ‫‪MO‬‬
‫‪lM‬‬
‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪1‬‬
‫‪o‬‬

‫ﺩﺭ ﺍﻳﻦ ﺑﺎﺭﮔﺬﺍﺭﻱ ‪ TIMER0‬ﺩﺭ ﺣﺎﻟﺖ ‪ ١٦‬ﺑﻴﺘﻲ ﺑﻪ ﺻﻮﺭﺕ ﺗﺎﻳﻤﺮ ﻭ ﺷﺮﻭﻉ ﺑﺎ ﻳﻚ ﻛﺮﺩﻥ ‪TR‬‬
‫‪tr‬‬

‫ﻣﺸﺨﺺ ﺷﺪﻩ )ﺷﺮﻭﻉ ﻧﺮﻡﺍﻓﺰﺍﺭﻱ( ﻭ ﺍﺯ ﺁﻧﺠﺎﻳﻲ ﻛﻪ ﺩﺭ ﺍﻳﻦ ﺣﺎﻟﺖ ﺗﺎﻳﻤﺮ ﺣﺪﺍﻛﺜﺮ ﺗﺎ ﻋﺪﺩ ‪٦٥٥٣٦‬‬
‫‪n‬‬

‫ﺷﻤﺎﺭﺵ ﻛﺮﺩﻩ ﺳﭙﺲ ﺳﺮﺭﻳﺰ ﻣﻲﻛﻨﺪ‪ .‬ﻣﺎ ﺑﺮﺍﻱ ﺗﺄﺧﻴﺮ ‪ 50ms‬ﻣﻲﺑﺎﻳﺴﺖ ﻋﺪﺩﻱ ﺭﺍ ﺩﺭ ‪ TL0‬ﻭ ‪TH0‬‬
‫‪o‬‬
‫‪.C‬‬

‫)ﺑﺎﻳﺖ ﭘﺎﻳﻴﻨﻲ ﻭ ﺑﺎﻻﻳﻲ ﺗﺎﻳﻤﺮ ﺻﻔﺮ( ﺑﺎﺭﮔﺬﺍﺭﻱ ﻛﻨﻴﻢ ﻛﻪ ﺑﻌﺪ ﺍﺯ ‪ ٥٠٠٠٠‬ﺳﻴﻜﻞ ﻳﺎ ‪ ٥٠٠٠٠‬ﻣﻴﻜﺮﻭ ﺛﺎﻧﻴﻪ‬

‫ﺳﺮﺭﻳﺰ ﻛﻨﺪ )ﺍﮔﺮ ﻛﺮﻳﺴﺘﺎﻝ ‪ 12MHz‬ﺑﺎﺷﺪ( ﭘﺲ ﺧﻮﺍﻫﻴﻢ ﺩﺍﺷﺖ‪.‬‬


‫‪w‬‬

‫‪65536 – 50000 = 15536‬‬


‫‪w‬‬

‫ﻳﻌﻨﻲ ﺍﮔﺮ ‪ TH0‬ﻭ ‪ TL0‬ﺭﺍ ﺩﺭ ﻣﺠﻤﻮﻉ ﺑﺎ ﻋﺪﺩ ‪ ١٥٥٣٦‬ﺑﺎﺭﮔﺬﺍﺭﻱ ﻛﻨﻴﻢ ﺷﻤﺎﺭﺵ ﺑﻪ ﺻﻮﺭﺕ‬
‫‪w‬‬

‫ﺻﻌﻮﺩﻱ ﺍﻧﺠﺎﻡ ﻣﻲﺷﻮﺩ ﺗﺎ ﺑﻪ ﻋﺪﺩ ﺳﺮﺭﻳﺰ ‪ ٦٥٥٣٦‬ﻣﻲﺭﺳﻴﻢ ﺩﺭ ﺍﻳﻦ ﻣﺪﺕ ﻣﺎ ﻣﻲﺗﻮﺍﻧﻴﻢ ﭘﺮﭼﻢ ‪ TF٠‬ﺭﺍ‬

‫ﻣﺮﺗﺒﹰﺎ ﭼﻚ ﻛﻨﻴﻢ ﻛﻪ ﺳﺮﺭﻳﺰ ﺭﺥ ﺩﺍﺩﻩ ﻳﺎ ﺧﻴﺮ ﻭ ﺩﺭ ﺻﻮﺭﺕ ﭘﻴﺶ ﺁﻣﺪﻥ ﺳﺮﺭﻳﺰ ﭘﺮﭼﻢ ‪ TF٠‬ﺭﺍ ﭘﺎﻙ ﻛﺮﺩﻩ‬

‫ﻭ ﺗﺎﻳﻤﺮ ﺭﺍ ﻧﮕﻪﺩﺍﺭﻳﻢ ﻭ ﺑﻪ ﺍﺩﺍﻣﻪ ﻛﺎﺭ ﺑﭙﺮﺩﺍﺯﻳﻢ‪.‬‬


‫ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش‬
‫اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ‬
‫ﻃﺮاﺣﯽ‪ ،‬ﺗﻮﻟﯿﺪ‪ ،‬اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ‬
‫آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ‬

‫ﺩﺭ ﺑﺮﻧﺎﻣﻪ ﻋﺪﺩ ‪ 3C‬ﺩﺭ ﻣﺒﻨﺎﻱ ﺷﺎﻧﺰﺩﻩ ﺭﺍ ﺩﺭ ‪ TH0‬ﻭ ﻋﺪﺩ ‪ B0‬ﺭﺍ ﺩﺭ ‪ TL0‬ﺑﺎﺭﮔﺬﺍﺭﻱ ﻛﺮﺩﻳﻢ ﭘﺲ‬

‫ﺩﺭ ﻣﺠﻤﻮﻉ ﺩﺭ ﺗﺎﻳﻤﺮ ﺻﻔﺮ ﻋﺪﺩ ‪ 3CB0‬ﺩﺭ ﻣﺒﻨﺎﻱ ﺷﺎﻧﺰﺩﻩ ﺭﺍ ﺧﻮﺍﻫﻴﻢ ﺩﺍﺷﺖ ﻛﻪ ﺑﺮﺍﺑﺮ ﻋﺪﺩ ‪15536‬‬

‫‪r‬‬
‫‪.i‬‬
‫ﺩﺳﻴﻤﺎﻝ ﻣﻲﺑﺎﺷﺪ‪.‬‬

‫‪s‬‬
‫ﺩﺭ ﻣﺮﺣﻠﻪ ﺑﻌﺪﻱ ﻣﺜﺎﻝ‪ ،‬ﺑﺎ ﻳﻚ ﻛﺮﺩﻥ ‪ TR0‬ﺗﺎﻳﻤﺮ ﺭﺍ ﺭﺍﻩﺍﻧﺪﺍﺯﻱ ﻛﺮﺩﻳﻢ ﻭ ﺩﺭ ﺧﻂ ﺑﻌﺪﻱ ﺑﺎ‬

‫‪r‬‬
‫‪e‬‬
‫ﺳﺮﻛﺸﻲ ‪ TF0‬ﻣﻨﺘﻈﺮ ﻳﻚ ﺷﺪﻥ ‪ TF0‬ﺷﺪﻳﻢ ﺩﺭ ﺍﻳﻦ ﺣﺎﻟﺖ ﻛﻪ ‪ CPU‬ﻳﻚ ﺣﻠﻘﻪ ﺷﺮﻃﻲ ﺭﺍ ﻣﺮﺗﺒﹰﺎ ﺍﺟﺮﺍ‬

‫‪k‬‬
‫ﻣﻲﻛﻨﺪ ﭘﺲ ﺍﺯ ﻳﻚ ﺷﺪﻥ ‪ TF0‬ﺍﺯ ﺣﻠﻘﻪ ﺧﺎﺭﺝ ﻣﻲﺷﻮﺩ ﻭ ﺑﺎ ﺻﻔﺮ ﻛﺮﺩﻥ ‪ TF0‬ﺑﺮﻧﺎﻣﻪ ‪ DELAY‬ﺭﺍ ﺑﺮﺍﻱ‬

‫‪a‬‬
‫‪lM‬‬
‫ﺑﺎﺭ ﺩﻳﮕﺮ ﺁﻣﺎﺩﻩ ﻛﺮﺩﻳﻢ ﻭ ﺗﺎﻳﻤﺮ ﺭﺍ ﻧﮕﻬﺪﺍﺷﺘﻴﻢ ﻭ ﺑﺎ ﺭﺳﻴﺪﻥ ﺑﻪ ‪ RET‬ﺑﻪ ﺑﺮﻧﺎﻣﻪ ﺍﺻﻠﻲ ﺑﺎﺯ ﺧﻮﺍﻫﻴﻢ ﮔﺸﺖ‪.‬‬

‫ﺍﮔﺮ ﺑﺨﻮﺍﻫﻴﻢ ﺯﻣﺎﻥ ﺗﺄﺧﻴﺮ ﺑﻴﺸﺘﺮ ﺍﺯ ‪ ٦٥‬ﻣﻴﻠﻲ ﺛﺎﻧﻴﻪ ﺑﺎﺷﺪ ﺑﺎﻳﺪ ﺍﺯ ﻳﻚ ﺣﻠﻘﻪ ‪DJNZ‬‬ ‫ﻧﮑﺘﻪ‪:‬‬
‫‪o‬‬
‫‪tr‬‬

‫ﺍﺳﺘﻔﺎﺩﻩ ﻛﻨﻴﻢ‪.‬‬
‫‪n‬‬
‫‪o‬‬

‫ﻧﻤﻮﻧﻪ ﺑﺮﻧﺎﻣﻪ )‪:(٥‬‬


‫‪.C‬‬

‫ﺑﺎ ﻳﻚ ﺗﺄﺧﻴﺮ ﺯﻣﺎﻧﻲ ﻳﻚ ﺛﺎﻧﻴﻪ ﻣﺮﺗﺒﹰﺎ ‪ LED‬ﻫﺎﻱ ﺭﻭﻱ ﭘﻮﺭﺕ ﻳﻚ ﺭﺍ ﺧﺎﻣﻮﺵ ﻭ ﺭﻭﺷﻦ ﻧﻤﺎﻳﻴﺪ‪.‬‬
‫‪MAIN:‬‬
‫‪w‬‬

‫‪MOV TMOD,#01H‬‬
‫‪MAIN LOOP‬‬
‫‪MOV P1,#0H‬‬
‫‪w‬‬

‫‪CALL DELAY‬‬
‫‪MOV P1,#0FFH‬‬
‫‪w‬‬

‫‪CALL DELAY‬‬
‫‪JMP MAIN‬‬
‫‪DELAY:‬‬
‫‪MOV R0,#20‬‬
‫‪DELAY LOOP:‬‬

‫‪MOV TH0,#3CH‬‬
‫‪MOV TH0,#0B0H‬‬
‫‪SETB TR0‬‬ ‫‪X = 50 ms‬‬
‫‪Y = 20 * X‬‬
‫‪Y = 20 * 50 ms = 1000ms‬‬
‫‪=1s‬‬
‫ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش‬
‫اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ‬
‫ﻃﺮاﺣﯽ‪ ،‬ﺗﻮﻟﯿﺪ‪ ،‬اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ‬
‫آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ‬

‫‪LOOP: JNB TF0,LOOP‬‬


‫‪CLR TF0‬‬
‫‪CLR TR0‬‬

‫‪r‬‬
‫‪DJNZ R0,DELAYLOOP‬‬

‫‪.i‬‬
‫‪RET‬‬

‫‪s‬‬
‫‪END‬‬

‫‪r‬‬
‫‪e‬‬
‫‪k‬‬
‫‪a‬‬
‫‪lM‬‬
‫‪o‬‬
‫‪tr‬‬
‫‪n‬‬
‫‪o‬‬
‫‪.C‬‬
‫‪w‬‬
‫‪w‬‬
‫‪w‬‬
‫ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش‬
‫اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ‬
‫ اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ‬،‫ ﺗﻮﻟﯿﺪ‬،‫ﻃﺮاﺣﯽ‬
‫آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ‬

:(٦) ‫ﻧﻤﻮﻧﻪ ﺑﺮﻧﺎﻣﻪ‬


‫ﺑﺮﻧﺎﻣﻪ ﺭﻗﺺ ﻧﻮﺭ ﺩﻭ ﺣﺎﻟﺘﻪ‬
ORG 0

r
MAIN:

.i
MOV P1,#55H
CALL DELAY

s
MOV P1,#0AAH

r
CALL DELAY
JMP MAIN

e
k
DELAY:
MOV R1,#255

a
MOV R2,#10
LOOP2:
lM
LOOP1:
MOV R0,#255
LOOP0:DJNZ R0,LOOP0
DJNZ R1,LOOP1
o

DJNZ R2,LOOP2
tr

RET

END
n
o
.C
w
w
w
‫ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش‬
‫اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ‬
‫ﻃﺮاﺣﯽ‪ ،‬ﺗﻮﻟﯿﺪ‪ ،‬اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ‬
‫آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ‬

‫ﻧﻤﻮﻧﻪ ﺑﺮﻧﺎﻣﻪ )‪:(٧‬‬


‫ﺭﻗﺺ ﻧﻮﺭ ﭼﻨﺪ ﺣﺎﻟﺘﻪ‬
‫‪MAIN:‬‬

‫‪r‬‬
‫‪MOD1:‬‬

‫‪.i‬‬
‫ﺩﺭ ﺍﻳﻦ ﻗﺴﻤﺖ ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ ﺍﻳﻨﻜﻪ ‪LED‬ﻫﺎ ﺑﻪ ﺻﻮﺭﺕ ﺁﻧﺪ ﻣﺸﺘﺮﻙ ﺑﺴﺘﻪ ﺷﺪﻩﺍﻧﺪ ﻳﻚ ‪ LED‬ﺧﺎﻣﻮﺵ‬

‫‪s‬‬
‫‪r‬‬
‫ﻫﺸﺖ ﺑﺎﺭ ﺑﻪ ﺳﻤﺖ ﺭﺍﺳﺖ ﺟﺎﺑﺠﺎ ﻣﻲﺷﻮﺩ‪.‬‬

‫‪e‬‬
‫‪MOV R0,#8‬‬

‫‪k‬‬
‫‪MOV A,#01H‬‬
‫‪LOOPMOD1:‬‬

‫‪a‬‬
‫‪RR A‬‬
‫‪MOV P1,A‬‬
‫‪lM‬‬
‫‪CALL DELAY‬‬
‫‪DJNZ R0,LOOPMOD1‬‬
‫‪o‬‬

‫‪MOD2:‬‬
‫ﺩﺭ ﺍﻳﻦ ﻗﺴﻤﺖ ﻫﻤﺎﻥ ‪ LED‬ﺩﺭ ‪ MOD1‬ﻫﻔﺖ ﺑﺎﺭ ﺑﻪ ﺳﻤﺖ ﭼﭗ ﺟﺎﺑﺠﺎ ﻣﻲﺷﻮﺩ‪.‬‬
‫‪tr‬‬

‫‪MOV R0,#7‬‬
‫‪LOOPMOD2:‬‬
‫‪n‬‬

‫‪RL A‬‬
‫‪MOV P1,A‬‬
‫‪o‬‬

‫‪CALL DELAY‬‬
‫‪.C‬‬

‫‪DJNZ R0,LOOPMOD2‬‬
‫‪MODONOFF:‬‬
‫‪MOV R0,#5‬‬
‫‪w‬‬

‫‪CLR A‬‬
‫‪LOOPMODONOFF:‬‬
‫‪CPL A‬‬
‫‪w‬‬

‫‪MOV P1,A‬‬
‫‪CALL DELAY‬‬
‫‪w‬‬

‫‪DJNZ R0,LOOPMODONOFF‬‬

‫‪MOD3:‬‬
‫ﺍﻳﻦ ﻣﺪ ﻣﺎﻧﻨﺪ ‪ MOD1‬ﻋﻤﻞ ﻛﺮﺩﻩ ﺑﺎ ﺍﻳﻦ ﺗﻔﺎﻭﺕ ﻛﻪ ‪ LED‬ﺭﻭﺷﻦ ﺑﻴﻦ ﻫﺸﺖ ‪ LED‬ﻫﺸﺖ ﺑﺎﺭ ﺳﻤﺖ‬

‫ﺭﺍﺳﺖ ﺣﺮﻛﺖ ﻣﻲﻛﻨﺪ‪.‬‬

‫‪MOV R0,#8‬‬
‫ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش‬
‫اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ‬
‫ اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ‬،‫ ﺗﻮﻟﯿﺪ‬،‫ﻃﺮاﺣﯽ‬
‫آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ‬

MOV A,#0FEH
LOOPMOD3:
RR A
MOV P1,A

r
CALL DELAY
DJNZ R0,LOOPMOD3

.i
s
MOD4:
.‫ ﺭﻭﺷﻦ ﺭﺍ ﻫﺸﺖ ﺑﺎﺭ ﺑﻪ ﺳﻤﺖ ﭼﭗ ﺍﻧﺘﻘﺎﻝ ﻣﻲﺩﻫﺪ‬LED ‫ﺍﻳﻦ ﻣﺪ ﻳﻚ‬

r
MOV R0,#8

e
LOOPMOD4:

k
MOV P1,A
CALL DELAY

a
RL A
DJNZ R0,LOOPMOD4
lM
CALL DELAY

MODCPL:
o

.‫ﻫﺎ ﻳﻜﻲ ﺩﺭ ﻣﻴﺎﻥ ﺭﻭﺷﻦ ﻭ ﺑﻘﻴﻪ ﺧﺎﻣﻮﺵ ﻣﻲﺷﻮﻧﺪ ﻭ ﺑﺎﻟﻌﻜﺲ‬LED ‫ﺩﺭ ﺍﻳﻦ ﻣُﺪ‬
tr

MOV R0,#8
MOV A,#55H
LOOPMODCPL:
n

CPL A
MOV P1,A
o

CALL DELAY
.C

DJNZ R0,LOOPMODCPL

JMP MAIN
w
w

;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
w

; DELAY One Second Mili SECOND


DELAY:
MOV R7,#4
LDK:
.‫ ﻣﻴﻠﻲ ﺛﺎﻧﻴﻪ ﺍﻳﺠﺎﺩ ﻣﻲﺷﻮﺩ‬٢٠٠ ‫ﺩﺭ ﺍﻳﻦ ﻗﺴﻤﺖ ﻳﻚ ﺗﺄﺧﻴﺮ‬
MOV TH0,#3CH
MOV TL0,#0B0H
MOV TMOD,#01H
SETB TR0
‫ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش‬
‫اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ‬
‫ﻃﺮاﺣﯽ‪ ،‬ﺗﻮﻟﯿﺪ‪ ،‬اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ‬
‫آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ‬

‫‪LOOPDELAY:JNB TF0,LOOPDELAY‬‬
‫‪CLR TR0‬‬
‫‪CLR TF0‬‬
‫‪DJNZ R7,LDK‬‬

‫‪r‬‬
‫‪RET‬‬

‫‪.i‬‬
‫‪s‬‬
‫‪r‬‬
‫‪e‬‬
‫‪k‬‬
‫‪a‬‬
‫‪lM‬‬
‫‪o‬‬
‫‪tr‬‬
‫‪n‬‬
‫‪o‬‬
‫‪.C‬‬
‫‪w‬‬
‫‪w‬‬
‫‪w‬‬
‫ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش‬
‫اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ‬
‫ﻃﺮاﺣﯽ‪ ،‬ﺗﻮﻟﯿﺪ‪ ،‬اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ‬
‫آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ‬

‫ﻧﺤﻮﻩ ﺍﺗﺼﺎﻝ ‪ LED‬ﻫﺎ ﺑﻪ ﻣﻴﻜﺮﻭ ﻛﻨﺘﺮﻭﻟﺮ‬

‫‪r‬‬
‫‪.i‬‬
‫‪s‬‬
‫‪r‬‬
‫‪e‬‬
‫‪k‬‬
‫‪a‬‬
‫‪lM‬‬
‫‪o‬‬
‫‪tr‬‬
‫‪n‬‬
‫‪o‬‬
‫‪.C‬‬
‫‪w‬‬
‫‪w‬‬
‫‪w‬‬
‫ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش‬
‫اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ‬
‫ﻃﺮاﺣﯽ‪ ،‬ﺗﻮﻟﯿﺪ‪ ،‬اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ‬
‫آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ‬

‫ﮐﻨﺘﺮﻝ ﻳﮏ ﮐﻠﻴﺪ ﺑﻪ ﻭﺳﻴﻠﻪ ﻣﻴﮑﺮﻭﮐﻨﺘﺮﻟﺮ‪:‬‬

‫ﺩﺭ ﺑﺮﺩ ﺁﻣﻮﺯﺷﻲ ﺩﻭ ﻛﻠﻴﺪ ﻓﻌﺎﻝ ﺑﻪ ﺻﻔﺮ ﻭﺟﻮﺩ ﺩﺍﺭﺩ ﻛﻪ ﺑﻪ ‪ P3.3‬ﻭ ‪ P3.5‬ﻣﺘﺼﻞ ﺍﺳﺖ ﺷﻤﺎ‬

‫‪r‬‬
‫‪.i‬‬
‫ﻣﻲﺗﻮﺍﻧﻴﺪ ﺍﺯ ﺁﻥﻫﺎ ﻧﻴﺰ ﺩﺭ ﻃﺮﺍﺣﻲ ﺧﻮﺩ ﺍﺳﺘﻔﺎﺩﻩ ﻧﻤﺎﻳﻴﺪ‪.‬‬

‫‪s‬‬
‫‪r‬‬
‫‪e‬‬
‫ﻧﻤﻮﻧﻪ ﺑﺮﻧﺎﻣﻪ )‪:(٨‬‬

‫‪k‬‬
‫ﺩﺭ ﺑﺮﻧﺎﻣﻪ ﺯﻳﺮ ﺑﺎ ﺯﺩﻥ ﻛﻠﻴﺪﻫﺎ ﻣﻲﺗﻮﺍﻧﻴﺪ ﻣﻨﻮﻱ ﻣﻮﺭﺩ ﻧﻈﺮ ﺟﻬﺖ ﻧﻤﺎﻳﺶ ﺭﻭﻱ ‪ LED‬ﻫﺎﻱ ﺑﺮﺩ‬

‫‪a‬‬ ‫ﺁﻣﻮﺯﺷﻲ ﺭﺍ ﺍﻧﺘﺨﺎﺏ ﻧﻤﺎﻳﻴﺪ‪.‬‬


‫‪lM‬‬

‫‪MAIN:‬‬
‫‪JNB P3.0,MENU1‬‬
‫‪o‬‬

‫‪JNB P3.5,MENU2‬‬
‫‪JMP MAIN‬‬
‫‪tr‬‬

‫‪MENU1:‬‬
‫‪MOV P1,#55H‬‬
‫‪n‬‬

‫‪JMP MAIN‬‬
‫‪MENU2:‬‬
‫‪o‬‬

‫‪MOV P1,#0AAH‬‬
‫‪JMP MAIN‬‬
‫‪.C‬‬

‫‪END‬‬
‫‪w‬‬
‫‪w‬‬
‫‪w‬‬
‫ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش‬
‫اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ‬
‫ﻃﺮاﺣﯽ‪ ،‬ﺗﻮﻟﯿﺪ‪ ،‬اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ‬
‫آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ‬

‫ﻧﺤﻮﻩ ﮐﺎﺭ ﺑﺎ ‪:KEYBOARD‬‬

‫‪r‬‬
‫ﺩﺭ ﺻﻔﺤﻪ ﻛﻠﻴﺪﻫﺎﻱ ﻣﺎﺗﺮﻳﺴﻲ ﺍﺻﻮﻝ ﻛﺎﺭ ﺑﻪ ﺻﻮﺭﺕ ﺯﻳﺮ ﺍﺳﺖ ﭼﻨﺎﻧﭽﻪ ﻛﻠﻴﺪﻱ ﺯﺩﻩ ﺷﻮﺩ ﺳﻄﺮ‬

‫‪.i‬‬
‫ﻭ ﺳﺘﻮﻥ ﻛﻠﻴﺪ ﻣﺬﻛﻮﺭ ﺑﻪ ﻫﻢ ﻭﺻﻞ ﻣﻲﺷﻮﻧﺪ ﻣﺎ ﻣﻲﺗﻮﺍﻧﻴﻢ ﺑﺎ ﻛﻨﺘﺮﻝ ﺩﻗﻴﻖ ﺳﻄﺮﻫﺎ ﻭ ﺳﺘﻮﻧﻬﺎ ﻛﻠﻴﺪ ﺯﺩﻩ‬

‫‪s‬‬
‫‪r‬‬
‫ﺷﺪﻩ ﺭﺍ ﭘﻴﺪﺍ ﻛﻨﻴﻢ‪.‬‬

‫‪e‬‬
‫‪k‬‬
‫ﺑﺮﺍﻱ ﺍﻳﻦ ﻛﺎﺭ ﺑﻪ ﺗﺮﺗﻴﺐ ﺯﻳﺮ ﻋﻤﻞ ﻣﻲﻛﻨﻴﻢ‪.‬‬

‫‪a‬‬
‫‪ -١‬ﺳﻄﺮ ﻳﻚ ﺭﺍ ﺯﻣﻴﻦ ﻣﻲﻛﻨﻴﻢ‬
‫‪lM‬‬
‫‪ -٢‬ﺳﺘﻮﻧﻬﺎ ﺭﺍ ﭼﻚ ﻣﻲﻛﻨﻴﻢ‬
‫‪o‬‬

‫‪ -٣‬ﺳﻄﺮ ﻳﻚ ﺭﺍ ﻳﻚ ﻣﻲﻛﻨﻴﻢ‬
‫‪tr‬‬

‫‪ -٤‬ﺳﻄﺮ ﺩﻭ ﺭﺍ ﺯﻣﻴﻦ ﻣﻲﻛﻨﻴﻢ‬


‫‪n‬‬

‫‪ -٥‬ﺳﺘﻮﻧﻬﺎ ﺭﺍ ﭼﻚ ﻣﻲﻛﻨﻴﻢ‬
‫‪o‬‬
‫‪.C‬‬

‫‪ -٦‬ﺳﻄﺮ ﺩﻭ ﺭﺍ ﻳﻚ ﻣﻲﻛﻨﻴﻢ‬
‫‪w‬‬

‫‪ -٧‬ﺳﻄﺮ ﺳﻪ ﺭﺍ ﺯﻣﻴﻦ ﻣﻲﻛﻨﻴﻢ‬


‫‪w‬‬

‫‪ -٨‬ﺳﺘﻮﻧﻬﺎ ﺭﺍ ﭼﻚ ﻣﻲﻛﻨﻴﻢ‬
‫‪w‬‬

‫‪ -٩‬ﺳﻄﺮ ﺳﻪ ﺭﺍ ﻳﻚ ﻣﻲﻛﻨﻴﻢ‬

‫‪ -١٠‬ﺳﻄﺮ ﭼﻬﺎﺭ ﺭﺍ ﺯﻣﻴﻦ ﻣﻲﻛﻨﻴﻢ‬

‫‪ -١١‬ﺳﺘﻮﻧﻬﺎ ﺭﺍ ﭼﻚ ﻣﻲﻛﻨﻴﻢ‬

‫‪ -١٢‬ﺳﻄﺮ ﭼﻬﺎﺭ ﺭﺍ ﻳﻚ ﻣﻲﻛﻨﻴﻢ‬


‫ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش‬
‫اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ‬
‫ﻃﺮاﺣﯽ‪ ،‬ﺗﻮﻟﯿﺪ‪ ،‬اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ‬
‫آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ‬

‫‪ -١٣‬ﺑﺮ ﮔﺸﺖ ﺑﻪ ﻣﻜﺎﻥ ﺍﻭﻟﻴﻪ‬

‫ﺩﺭﻣﺮﺍﺣﻞ ﺑﺎﻻﺩﺭﺻﻮﺭﺕ ﻓﺸﺮﺩﻩ ﺷﺪﻥ ﻫﺮﻛﻠﻴﺪ ﻫﻨﮕﺎﻡ ﭼﻚ ﻛﺮﺩﻥ ﺳﺘﻮﻧﻬﺎ ﺳﺘﻮﻥ ﻣﺮﺑﻮﻁ ﺑﻪ ﺁﻥ ﺻﻔﺮ‬

‫‪r‬‬
‫‪.i‬‬
‫ﺧﻮﺍﻫﺪ ﺑﻮﺩ‪.‬‬

‫‪s‬‬
‫ﺑﻌﻨﻮﺍﻥ ﻣﺜﺎﻝ ﻓﺮﺽ ﻛﻨﻴﺪ ﻛﻠﻴﺪﻱ ﺩﺭ ﺳﻄﺮ ﺩﻭﻡ ‪ ،‬ﺳﺘﻮﻥ ﺳﻮﻡ ﺯﺩﻩ ﺷﺪﻩ ﺍﺳﺖ ‪ ،‬ﺑﻌﺪﺍﺯ ﺻﻔﺮﻛﺮﺩﻥ ﺳﻄﺮ‬

‫‪r‬‬
‫‪e‬‬
‫ﺩﻭﻡ ﻭﭼﻚ ﻛﺮﺩﻥ ﺳﺘﻮﻧﻬﺎ ﺳﺘﻮﻥ ﺳﻮﻡ ﺻﻔﺮ ﺧﻮﺍﻫﺪﺑﻮﺩ ﭘﺲ ﺑﻪ ﻣﺤﻞ ﻣﺮﺑﻮﻁ ﺑﻪ ﺁﻥ ﭘﺮﺵ ﻣﻲﻧﻤﺎﺋﻴﻢ‪.‬‬

‫‪k‬‬
‫‪a‬‬
‫ﺣﺎﻝ ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ ﻣﻄﺎﻟﺐ ﮔﻔﺘﻪ ﺷﺪﻩ ﺑﻪ ﺣﻞ ﻳﻚ ﺗﻤﺮﻳﻦ ﻣﻲﭘﺮﺩﺍﺯﻳﻢ‪.‬‬
‫‪lM‬‬
‫‪o‬‬
‫‪tr‬‬
‫‪n‬‬
‫‪o‬‬
‫‪.C‬‬
‫‪w‬‬
‫‪w‬‬
‫‪w‬‬
‫ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش‬
‫اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ‬
‫ﻃﺮاﺣﯽ‪ ،‬ﺗﻮﻟﯿﺪ‪ ،‬اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ‬
‫آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ‬

‫ﻧﻤﻮﻧﻪ ﺑﺮﻧﺎﻣﻪ)‪:(٩‬‬
‫ﺑﺮﻧﺎﻣﻪﺍﻱ ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﺍﺑﺘﺪﺍ ﺻﻔﺤﻪ ﻛﻠﻴﺪ ﭼﻚ ﺷﻮﺩ ﻭﻫﺮ ﻛﻠﻴﺪﻱ ﻛﻪ ﺍﻧﺘﺨﺎﺏ ﺷﺪ ﻣﺘﻨﺎﻇﺮ ﺑﺎﻳﻨﺮﻱ‬

‫‪r‬‬
‫ﺁﻥ ﻛﻠﻴﺪ ﺑﺮ ﺭﻭﻱ ﭘﻮﺭﺕ ﻳﻚ ﻣﺸﺨﺺ ﺷﻮﺩ‪.‬‬

‫‪.i‬‬
‫‪s‬‬
‫ﺑﺮﺍﻱ ﺣﻞ ﺍﻳﻦ ﺗﻤﺮﻳﻦ ﺍﺑﺘﺪﺍ ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﺩﺳﺘﻮﺭ ‪ EQU‬ﺗﻤﺎﻣﻲ ﺳﻄﺮﻫﺎ ﻭﺳﺘﻮﻥﻫﺎ ﺭﺍ ﺑﺎ ﭘﻴﻨﻲ ﻛﻪ‬

‫‪r‬‬
‫‪e‬‬
‫ﺑﻪ ﺁﻥ ﻣﺘﺼﻞ ﻫﺴﺘﻨﺪ ﻣﺸﺨﺺ ﻣﻲﻛﻨﻴﻢ‪.‬‬

‫‪k‬‬
‫‪a‬‬
‫‪ROW1‬‬ ‫‪EQU‬‬ ‫‪P2.7‬‬
‫‪ROW2‬‬ ‫‪EQU‬‬ ‫‪P2.6‬‬
‫‪lM‬‬
‫‪ROW3‬‬ ‫‪EQU‬‬ ‫‪P2.5‬‬
‫‪ROW4‬‬ ‫‪EQU‬‬ ‫‪P2.4‬‬
‫‪COL1‬‬ ‫‪EQU‬‬ ‫‪P2.3‬‬
‫‪COL2‬‬ ‫‪EQU‬‬ ‫‪P2.2‬‬
‫‪o‬‬

‫‪COL3‬‬ ‫‪EQU‬‬ ‫‪P2.1‬‬


‫‪KEYBUF‬‬ ‫‪EQU‬‬ ‫‪30H‬‬
‫‪tr‬‬

‫ﻣﻌﺮﻓﻲ ﻳﻚ ﺧﺎﻧﻪ ﺍﺯ ﺣﺎﻓﻈﻪ ﺑﻨﺎﻡ ‪KEYBUF‬‬


‫‪n‬‬

‫‪MAIN:‬‬
‫‪CALLKEYSCAN‬‬
‫‪o‬‬

‫‪MOV P1,KEYBUF‬‬
‫‪.C‬‬

‫‪JMP MAIN‬‬
‫‪w‬‬

‫‪KEYSCAN:‬‬
‫‪MOV P2,#0FFH‬‬
‫‪CLR ROW1‬‬
‫‪w‬‬

‫‪JNB COL1,KEY1‬‬
‫ﺑﺮﺭﺳﻲ ﺳﺘﻮﻥ ﺍﻭﻝ‬
‫‪w‬‬

‫‪JNB COL2,KEY2‬‬
‫ﺑﺮﺭﺳﻲ ﺳﺘﻮﻥ ﺩﻭﻡ‬
‫‪JNB COL3,KEY3‬‬
‫ﺑﺮﺭﺳﻲ ﺳﺘﻮﻥ ﺳﻮﻡ‬
‫‪SETB ROW1‬‬
‫ﺑﺮﮔﺮﺩﺍﻧﺪﻥ ﺳﻄﺮ ﺻﻔﺮ ﺷﺪﻩ ﺑﻪ ﺣﺎﻟﺖ ﺍﻭﻝ‬
‫‪CLR ROW2‬‬
‫ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش‬
‫اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ‬
‫ اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ‬،‫ ﺗﻮﻟﯿﺪ‬،‫ﻃﺮاﺣﯽ‬
‫آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ‬

‫ﺻﻔﺮ ﻛﺮﺩﻥ ﺳﻄﺮ ﺩﻭﻡ‬


JNB COL1,KEY4

r
.‫ﺍﮔﺮ ﺳﻄﺮ ﺍﻭﻝ ﺻﻔﺮ ﺷﺪ ﺑﻪ ﻣﻨﺰﻟﻪ ﻓﺸﺮﺩﻩ ﺷﺪﻥ ﻛﻠﻴﺪﻱ ﺩﺭ ﺳﻄﺮ ﺩﻭﻡ ﻭ ﺳﺘﻮﻥ ﺩﻭﻡ ﺍﺳﺖ‬
JNB COL2,KEY5

.i
JNB COL3,KEY6
SETB ROW2

s
CLR ROW3

r
JNB COL1,KEY7

e
JNB COL2,KEY8
JNB COL3,KEY9

k
SETB ROW3
CLR ROW4

a
JNB COL3,KEYNUMBER
lM
JNB COL2,KEY0
JNB COL1,KEYSTAR
JMP KEYSCAN
KEY1:
o

MOV KEYBUF,#01H
RET
tr

KEY2:
MOV KEYBUF,#02H
n

RET
KEY3:
o

MOV KEYBUF,#03H
RET
.C

KEY4:
MOV KEYBUF,#04H
RET
w

KEY5:
MOV KEYBUF,#05H
w

RET
KEY6:
MOV KEYBUF,#06H
w

RET
KEY7:
MOV KEYBUF,#07H
RET
KEY8:
MOV KEYBUF,#08H
RET
KEY9:
MOV KEYBUF,#09H
‫ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش‬
‫اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ‬
‫ﻃﺮاﺣﯽ‪ ،‬ﺗﻮﻟﯿﺪ‪ ،‬اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ‬
‫آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ‬

‫‪RET‬‬
‫‪KEY0:‬‬
‫‪MOV KEYBUF,#0H‬‬
‫‪RET‬‬

‫‪r‬‬
‫‪KEYSTAR:‬‬
‫‪MOV KEYBUF,#0AAH‬‬

‫‪.i‬‬
‫‪RET‬‬

‫‪s‬‬
‫‪KEYNUMBER:‬‬
‫‪MOV KEYBUF,#55H‬‬

‫‪r‬‬
‫‪RET‬‬

‫‪e‬‬
‫‪END‬‬

‫‪k‬‬
‫‪a‬‬
‫‪lM‬‬
‫‪o‬‬
‫‪tr‬‬
‫‪n‬‬
‫‪o‬‬
‫‪.C‬‬
‫‪w‬‬
‫‪w‬‬
‫‪w‬‬
‫ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش‬
‫اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ‬
‫ﻃﺮاﺣﯽ‪ ،‬ﺗﻮﻟﯿﺪ‪ ،‬اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ‬
‫آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ‬

‫ﻧﺤﻮﻩ ﻛﺎﺭ ﺑﺎ ‪) Stepper motor‬ﻣﻮﺗﻮﺭ ﭘﻠﻪ ﺍﻱ(‬

‫ﺑﺎ ﻣﻄﺎﻟﻌﻪ ﺍﻳﻦ ﺑﺨﺶ ﺷﻤﺎ ﻣﻲﺗﻮﺍﻧﻴﺪ ﻣﻮﺗﻮﺭﻫﺎﻱ ﭘﻠﻪﺍﻱ ﭼﻬﺎﺭ ﻓﺎﺯ ﺭﺍ ﺭﺍﻩﺍﻧﺪﺍﺯﻱ‬

‫‪r‬‬
‫‪.i‬‬
‫ﻧﻤﺎﺋﻴﺪ‪.‬‬

‫‪s‬‬
‫‪r‬‬
‫ﻳﻚ ﻣﻮﺗﻮﺭ ﭘﻠﻪﺍﻱ ﭼﻬﺎﺭ ﻓﺎﺯ ﺍﺯ ﭼﻬﺎﺭ ﺳﻴﻢﭘﻴﭻ ﺗﺸﻜﻴﻞ ﺷﺪﻩ ﺍﺳﺖ ﻛﻪ ﺍﺯ ﻳﻚ‬

‫‪e‬‬
‫ﺳﺮ ﻣﺸﺘﺮﻙ ﺷﺪﻩ ﺍﻧﺪ‪.‬‬

‫‪k‬‬
‫‪a‬‬
‫ﺍﻟﺒﺘﻪ ﺗﻮﺟﻪ ﺩﺍﺷﺘﻪ ﺑﺎﺷﻴﺪ ﺍﻳﻦ ﺍﻣﻜﺎﻥ ﻭﺟﻮﺩ ﺩﺍﺭﺩ ﻛﻪ ﺳﺮ ﺳﻴﻢﭘﻴﭻﻫﺎ ﺩﻭﺑﻪﺩﻭ ﺑﺎﻫﻢ ﻣﺸﺘﺮﻙ ﺷﺪﻩ‬
‫‪lM‬‬
‫ﺑﺎﺷﻨﺪﻛﻪ ﻣﻲﺗﻮﺍﻥ ﮔﻔﺖ ﺳﻴﻢﻫﺎﻱ ﺧﺮﻭﺟﻲ ﻳﻚ ﻣﻮﺗﻮﺭ ﭼﻬﺎﺭ ﻓﺎﺯ ﭘﻨﺞ ﻳﺎ ﺷﺶ ﺭﺷﺘﻪ ﻣﻲﺑﺎﺷﻨﺪ‪.‬‬
‫‪o‬‬
‫‪tr‬‬
‫‪n‬‬
‫‪o‬‬
‫‪.C‬‬
‫‪w‬‬
‫‪w‬‬
‫‪w‬‬
‫ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش‬
‫اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ‬
‫ﻃﺮاﺣﯽ‪ ،‬ﺗﻮﻟﯿﺪ‪ ،‬اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ‬
‫آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ‬

‫ﺟﻬﺖ ﺭﺍﻩﺍﻧﺪﺍﺯﻱ ﻳﻚ ﻣﻮﺗﻮﺭ ﭘﻠﻪ ﺍﻱ ﺷﻤﺎ ﻣﻲﺗﻮﺍﻧﻴﺪ ﺳﺮ ﻣﺸﺘﺮﻙ ﺭﺍ ﺑﻪ‪VCC‬ﻣﺘﺼﻞ ﻧﻤﺎﻳﻴﺪ ﻭﺑﺎ‬

‫‪r‬‬
‫‪.‬ﺯﻣﻴﻦ ﻛﺮﺩﻥ ﺳﺮ ﺳﻴﻢﭘﻴﭻﻫﺎ ﺑﻪ ﺗﺮﺗﻴﺐ ﺯﻳﺮ ﺁﻥﺭﺍ ﺩﺭ ﺟﻬﺖ ﺩﻟﺨﻮﺍﻩ ﺑﻪ ﺣﺮﻛﺖ ﺩﺭ ﺁﻭﺭﻳﺪ‪.‬‬

‫‪.i‬‬
‫‪s‬‬
‫‪r‬‬
‫‪e‬‬
‫‪k‬‬
‫‪a‬‬
‫‪lM‬‬
‫‪o‬‬
‫‪tr‬‬
‫‪n‬‬

‫ﺑﻪ ﺍﻳﻦ ﻧﻜﺘﻪ ﺗﻮﺟﻪ ﻛﻨﻴﺪ ﻛﻪ ﻣﻴﻜﺮﻭ ﺑﻪ ﺗﻨﻬﺎﻳﻲ ﻧﻤﻲﺗﻮﺍﻧﺪ ﺟﺮﻳﺎﻥ ﻭ ﻭﻟﺘﺎﮊ ﻻﺯﻡ ﺭﺍ ﺑﺮﺍﻱ ﻣﻮﺗﻮﺭ‬
‫‪o‬‬

‫ﺗﺄﻣﻴﻦ ﻧﻤﺎﻳﺪ ﺑﻪ ﻫﻤﻴﻦ ﺩﻟﻴﻞ ﺍﺯ ﺗﺮﺍﻧﺰﻳﺴﺘﻮﺭﻫﺎﻱ ﻗﺪﺭﺕ ﺍﺳﺘﻔﺎﺩﻩ ﻛﺮﺩﻩﺍﻳﻢ ﻛﻪ ﻋﻤﻞ ‪ Not‬ﺭﺍ ﻧﻴﺰ ﺩﺭ‬
‫‪.C‬‬

‫ﺧﺮﻭﺟﻲﻫﺎ ﺍﻋﻤﺎﻝ ﻣﻲﻧﻤﺎﻳﺪ‪ ،‬ﺩﺭ ﻣﺠﻤﻮﻉ ﺑﺎ ﻳﻚ ﻛﺮﺩﻥ ﺑﻴﺲ ﻫﺮ ﺗﺮﺍﻧﺰﻳﺴﺘﻮﺭ ﻣﻄﺎﺑﻖ ﺷﻜﻞ ﻛﻠﻜﺘﻮﺭ ﺁﻥ ﺑﻪ‬
‫‪w‬‬

‫ﺯﻣﻴﻦ ﻣﺘﺼﻞ ﻣﻲﮔﺮﺩﺩ‪.‬‬


‫‪w‬‬
‫‪w‬‬
‫ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش‬
‫اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ‬
‫ﻃﺮاﺣﯽ‪ ،‬ﺗﻮﻟﯿﺪ‪ ،‬اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ‬
‫آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ‬

‫‪r‬‬
‫‪.i‬‬
‫‪s‬‬
‫‪r‬‬
‫‪e‬‬
‫‪k‬‬
‫‪a‬‬
‫‪lM‬‬
‫ﭼﻮﻥ ﺳﺮ ﻣﺸﺘﺮﻙ ﺳﻴﻢﭘﻴﭻﻫﺎ ﻧﻴﺰ ‪ VCC‬ﺷﺪﻩﺍﻧﺪ ﺍﻃﺮﺍﻑ ﺳﻴﻢﭘﻴﭻ ﺍﻧﺘﺨﺎﺏ ﺷﺪﻩ ﻣﻴﺪﺍﻥ ﻣﻐﻨﺎﻃﻴﺴﻲ‬

‫ﺍﻳﺠﺎﺩ ﻣﻲﮔﺮﺩﺩ ﻛﻪ ﺑﺎﻋﺚ ﺟﺬﺏ ﺭﻭﺗﻮﺭ ﻣﻲﺷﻮﺩ ﻭ ﺑﻪ ﻫﻤﻴﻦ ﻃﺮﻳﻖ ﻣﻲﺗﻮﺍﻥ ﺩﺭ ﻳﻚ ﻣﻮﺗﻮﺭ ﺣﺮﻛﺖ‬
‫‪o‬‬
‫‪tr‬‬

‫ﺍﻳﺠﺎﺩ ﻧﻤﻮﺩ‪.‬‬
‫‪n‬‬

‫ﭼﻨﺎﻧﭽﻪ ﺷﻤﺎ ﻫﻤﻮﺍﺭﻩ ﺑﺘﺮﺗﻴﺐ ﺩﻭ ﻓﺎﺯ ﻛﻨﺎﺭ ﻫﻢ ﺭﺍ ﺩﺭ ﻣﻮﺗﻮﺭ ﻓﻌﺎﻝ ﺳﺎﺯﻳﺪ ﺭﻭﺗﻮﺭ ﺗﺤﺖ ﺗﺎﺛﻴﺮ‬
‫‪o‬‬

‫ﺑﺮﺁﻳﻨﺪ ﺩﻭ ﻣﻴﺪﺍﻥ ﺍﺯ ﻃﺮﻑ ﺳﻴﻢﭘﻴﭻﻫﺎ ﻗﺮﺍﺭ ﺧﻮﺍﻫﺪ ﮔﺮﻓﺖ ﺩﺭ ﻧﺘﻴﺠﻪ ﻣﻮﺗﻮﺭ ﺑﺎ ﻗﺪﺭﺕ ﺑﻴﺸﺘﺮﻱ ﺩﻭﺭﺍﻥ‬
‫‪.C‬‬

‫ﺧﻮﺍﻫﺪ ﻛﺮﺩ‪.‬‬
‫‪w‬‬

‫ﺩﺭ ﺟﺪﻭﻝ ﺯﻳﺮ ﻣﻘﺎﺩﻳﺮﻱ ﺭﺍ ﻛﻪ ﺳﻴﻢﭘﻴﭻﻫﺎﻱ ﻣﻮﺗﻮﺭ ﭘﻠﻪﺍﻱ ﺑﺮﺍﻱ ﺑﻪ ﺣﺮﻛﺖ ﺩﺭ ﺁﻣﺪﻥ ﺍﺣﺘﻴﺎﺝ‬
‫‪w‬‬

‫ﺩﺍﺭﺩ ﻣﺸﺎﻫﺪﻩ ﻣﻲﻛﻨﻴﺪ‪.‬‬


‫‪w‬‬

‫ﭘﻠﻪ‬ ‫ﺳﻴﻢ ﭘﻴﭻ ‪A‬‬ ‫ﺳﻴﻢ ﭘﻴﭻ ‪B‬‬ ‫ﺳﻴﻢ ﭘﻴﭻ ‪C‬‬ ‫ﺳﻴﻢ ﭘﻴﭻ ‪D‬‬
‫ﺩﺭ ﺟﻬﺖ‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫ﺧﻼﻑ‬
‫‪١‬‬
‫‪1‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫ﺟﻬﺖ‬
‫‪٢‬‬
‫ﺎ‬
‫ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش‬
‫اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ‬
‫ﻃﺮاﺣﯽ‪ ،‬ﺗﻮﻟﯿﺪ‪ ،‬اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ‬
‫آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ‬

‫ﺳﺎﻋﺖ‬ ‫‪٣‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫ﺳﺎﻋﺖ‬


‫‪٤‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪1‬‬

‫‪r‬‬
‫‪.i‬‬
‫ﺗﻮﺟﻪ ﺩﺍﺷﺘﻪ ﺑﺎﺷﻴﺪ ﻛﻪ ﻣﻲﺗﻮﺍﻥ ﺍﺯ ﻫﺮ ﻳﻚ ﺍﺯ ﭘﻠﻪ ﻫﺎﻱ ﺟﺪﻭﻝ ﺑﺎﻻ ﺷﺮﻭﻉ ﻛﺮﺩ ﻭﻟﻲ ﺑﻪ ﻣﺤﺾ‬

‫‪s‬‬
‫ﺷﺮﻭﻉ ﺑﺎﻳﺪ ﺗﺮﺗﻴﺐ ﺭﻋﺎﻳﺖ ﺷﻮﺩ‪.‬‬

‫‪r‬‬
‫‪e‬‬
‫‪k‬‬
‫‪a‬‬
‫‪lM‬‬
‫‪o‬‬
‫‪tr‬‬
‫‪n‬‬
‫‪o‬‬
‫‪.C‬‬
‫‪w‬‬
‫‪w‬‬
‫‪w‬‬
‫ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش‬
‫اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ‬
‫ﻃﺮاﺣﯽ‪ ،‬ﺗﻮﻟﯿﺪ‪ ،‬اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ‬
‫آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ‬

‫ﻧﻤﻮﻧﻪ ﺑﺮﻧﺎﻣﻪ )‪:(١١‬‬


‫ﺑﺮﻧﺎﻣﻪﺍﻱ ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﻣﻮﺗﻮﺭ ﻣﺮﺗﺒﹰﺎ ﺑﭽﺮﺧﺪ‪.‬‬

‫‪r‬‬
‫‪MAIN:‬‬

‫‪.i‬‬
‫‪MOV A,#66H‬‬
‫‪BACK:‬‬

‫‪s‬‬
‫‪RR‬‬ ‫‪A‬‬

‫‪r‬‬
‫‪MOV‬‬ ‫‪P1,A‬‬

‫‪e‬‬
‫‪CALL DELAY‬‬

‫‪k‬‬
‫‪JNB‬‬ ‫‪P3.5,LEFT‬‬
‫‪JMP‬‬ ‫‪BACK‬‬

‫‪a‬‬
‫‪lM‬‬
‫‪DELAY:‬‬
‫‪MOV R7,#4‬‬
‫‪LDK:‬‬
‫ﺩﺭ ﺍﻳﻦ ﻗﺴﻤﺖ ﻳﻚ ﺗﺄﺧﻴﺮ ‪ ٢٠٠‬ﻣﻴﻠﻲ ﺛﺎﻧﻴﻪ ﺍﻳﺠﺎﺩ ﻣﻲﺷﻮﺩ‪.‬‬
‫‪o‬‬

‫‪MOV TH0,#3CH‬‬
‫‪tr‬‬

‫‪MOV TL0,#0B0H‬‬
‫‪MOV TMOD,#01H‬‬
‫‪SETB TR0‬‬
‫‪n‬‬

‫‪LOOPDELAY:JNB TF0,LOOPDELAY‬‬
‫‪CLR TR0‬‬
‫‪o‬‬

‫‪CLR TF0‬‬
‫‪.C‬‬

‫‪DJNZ R7,LDK‬‬
‫‪RET‬‬
‫‪w‬‬

‫‪END‬‬
‫‪w‬‬
‫‪w‬‬
‫ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش‬
‫اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ‬
‫ﻃﺮاﺣﯽ‪ ،‬ﺗﻮﻟﯿﺪ‪ ،‬اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ‬
‫آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ‬

‫‪.‬‬

‫ﻧﻤﻮﻧﻪ ﺑﺮﻧﺎﻣﻪ )‪:(١١‬‬

‫‪r‬‬
‫ﺑﺮﻧﺎﻣﻪﺍﻱ ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﺑﺎ ﻓﺸﺎﺭ ﺩﺍﺩﻥ‪ P3.3‬ﻣﻮﺗﻮﺭ ﺭﺍﺳﺖﮔﺮﺩ ﻭﺑﺎﻓﺸﺎﺭ ﺩﺍﺩﻥ ﻛﻠﻴﺪ ‪P3.5‬ﻣﻮﺗﻮﺭ ﭼﭙﮕﺮﺩ‬

‫‪.i‬‬
‫‪s‬‬
‫ﺑﭽﺮﺧﺪ‪.‬‬

‫‪r‬‬
‫‪ORG 00H‬‬

‫‪e‬‬
‫‪KEYSCAN:‬‬
‫‪JNB P3.3,RIGHT‬‬

‫‪k‬‬
‫‪JNB P3.5,LEFT‬‬

‫‪a‬‬
‫‪JMP KEYSCAN‬‬
‫‪lM‬‬
‫‪RIGHT:‬‬
‫‪MOV‬‬ ‫‪A,#66H‬‬
‫‪BACK:‬‬
‫‪o‬‬

‫‪RR‬‬ ‫‪A‬‬
‫‪tr‬‬

‫‪MOV‬‬ ‫‪P1,A‬‬
‫‪CALL‬‬ ‫‪DELAY‬‬
‫‪JNB‬‬ ‫‪P3.5,LEFT‬‬
‫‪n‬‬

‫‪JMP‬‬ ‫‪BACK‬‬
‫‪o‬‬
‫‪.C‬‬

‫‪LEFT:‬‬
‫‪MOV‬‬ ‫‪A,#66H‬‬
‫‪BACK:‬‬
‫‪w‬‬

‫‪RL‬‬ ‫‪A‬‬
‫‪MOV‬‬ ‫‪P1,A‬‬
‫‪w‬‬

‫‪CALL‬‬ ‫‪DELAY‬‬
‫‪JNB‬‬ ‫‪P3.3,RIGHT‬‬
‫‪w‬‬

‫‪JMP‬‬ ‫‪BACK‬‬
‫‪DELAY:‬‬
‫‪MOV R7,#4‬‬
‫‪LDK:‬‬
‫ﺩﺭ ﺍﻳﻦ ﻗﺴﻤﺖ ﻳﻚ ﺗﺄﺧﻴﺮ ‪ ٢٠٠‬ﻣﻴﻠﻲ ﺛﺎﻧﻴﻪ ﺍﻳﺠﺎﺩ ﻣﻲﺷﻮﺩ‪.‬‬
‫‪MOV TH0,#3CH‬‬
‫‪MOV TL0,#0B0H‬‬
‫‪MOV TMOD,#01H‬‬
‫‪SETB TR0‬‬
‫ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش‬
‫اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ‬
‫ﻃﺮاﺣﯽ‪ ،‬ﺗﻮﻟﯿﺪ‪ ،‬اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ‬
‫آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ‬

‫‪LOOPDELAY:JNB TF0,LOOPDELAY‬‬
‫‪CLR TR0‬‬
‫‪CLR TF0‬‬
‫‪DJNZ R7,LDK‬‬

‫‪r‬‬
‫‪RET‬‬
‫‪END‬‬

‫‪.i‬‬
‫‪s‬‬
‫‪r‬‬
‫‪e‬‬
‫‪k‬‬
‫‪a‬‬
‫‪lM‬‬
‫‪o‬‬
‫‪tr‬‬
‫‪n‬‬
‫‪o‬‬
‫‪.C‬‬
‫‪w‬‬
‫‪w‬‬
‫‪w‬‬
‫ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش‬
‫اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ‬
‫ﻃﺮاﺣﯽ‪ ،‬ﺗﻮﻟﯿﺪ‪ ،‬اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ‬
‫آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ‬

‫ﻳﺎﺩﺩﺍﺷﺖ‪:‬‬

‫‪r‬‬
‫‪.i‬‬
‫‪s‬‬
‫‪r‬‬
‫‪e‬‬
‫‪k‬‬
‫‪a‬‬
‫‪lM‬‬
‫‪o‬‬
‫‪tr‬‬
‫‪n‬‬
‫‪o‬‬
‫‪.C‬‬
‫‪w‬‬
‫‪w‬‬
‫‪w‬‬
‫ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش‬
‫اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ‬
‫ﻃﺮاﺣﯽ‪ ،‬ﺗﻮﻟﯿﺪ‪ ،‬اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ‬
‫آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ‬

‫‪7SEGMENT‬‬

‫‪ 7SEGMENT‬ﺍﺯ ﺗﺮﻛﻴﺐ ﻫﻔﺖ ‪ LED‬ﺳﺎﺧﺘﻪ ﺷﺪﻩ ﺍﺳﺖ ﻛﻪ ‪LED‬ﻫﺎ ﺑﻪ ﺻﻮﺭﺕ ﻣﻨﻈﻢ ﭼﻴﺪﻩ‬

‫‪r‬‬
‫‪.i‬‬
‫ﺷﺪﻩﺍﻧﺪ ﻛﻪ ﺁﻥﻫﺎ ﺭﺍ ﺑﺎ ﺣﺮﻭﻑ ﻻﺗﻴﻦ ﻣﺸﺨﺺ ﻛﺮﺩﻩﺍﻳﻢ‪ .‬ﺟﻬﺖ ﻧﻤﺎﻳﺶ ﻋﺪﺩ‬

‫‪s‬‬
‫‪r‬‬
‫ﻣﻮﺭﺩ ﻧﻈﺮ ﻗﺴﻤﺖﻫﺎﻱ ﻣﺨﺘﻠﻒ ﻣﻲﺑﺎﻳﺴﺖ ﺍﻧﺘﺨﺎﺏ ﺷﻮﻧﺪ‪.‬‬

‫‪e‬‬
‫ﺑﺮﺍﻱ ﻧﻤﺎﻳﺶ ﻋﺪﺩ ‪ 5‬ﻣﻲﺑﺎﻳﺴﺖ ﺣﺮﻭﻑ ‪a, f, g, c, d‬‬ ‫ﻣﺜﺎل‪:‬‬

‫‪k‬‬
‫‪a‬‬
‫ﻫﻤﮕﻲ ﺭﻭﺷﻦ ﺷﻮﻧﺪ‪.‬‬
‫‪lM‬‬
‫ﺗﻮﺟﻪ‪ :‬ﺍﻟﺒﺘﻪ ‪7segment‬ﻫﺎ ﺁﻧﺪ ﻭ ﻳﺎ ﻛﺎﺗﺪ ‪ LED‬ﺁﻥﻫﺎ ﺑﺴﺘﻪ ﺑﻪ ﻧﻮﻉ ‪ segment‬ﻣﺸﺘﺮﻙ ﺷﺪﻩﺍﻧﺪ ﻛﻪ ﺩﺭ ﺑﺮﺩ‬
‫‪o‬‬

‫ﺁﻣﻮﺯﺷﻲ ‪ 7segment‬ﺍﺯ ﻧﻮﻉ ﺁﻧﺪ ﻣﺸﺘﺮﻙ ﻣﻲﺑﺎﺷﺪ‪.‬‬


‫‪tr‬‬

‫ﺟﻬﺖ ﺳﺎﺩﮔﻲ ﻛﺎﺭ ﻭ ﺣﺪﺍﻛﺜﺮ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﻣﻴﻜﺮﻭﻛﻨﺘﺮﻟﺮ ﻣﺎ ﺍﺯ ﻳﻚ ﻣﺒﺪﻝ ‪ BCD‬ﺑﻪ ‪7segment‬‬


‫‪n‬‬

‫ﺍﺳﺘﻔﺎﺩﻩ ﻛﺮﺩﻳﻢ ﻛﻪ ﺷﻤﺎ ﺑﺎ ﻗﺮﺍﺭﺩﺍﺩﻥ ﻋﺪﺩ ﺧﻮﺩ ﺑﻪ ﺻﻮﺭﺕ ‪ BCD‬ﺑﺮ ﺭﻭﻱ ‪ P2‬ﻣﺒﺪﻝ ﻓﻮﻕ ﻛﻪ ﺍﺯ ‪IC‬‬
‫‪o‬‬
‫‪.C‬‬

‫‪ 7447‬ﺍﺳﺘﻔﺎﺩﻩ ﺷﺪﻩ ﺍﺳﺖ ﺁﻥ ﺭﺍ ﺭﻭﻱ ‪ 7SEGMENT‬ﺧﻮﺍﻫﻴﺪ ﺩﻳﺪ‪ .‬ﺑﺮﺍﻱ ﺩﺍﺷﺘﻦ ﺗﻌﺪﺍﺩ ﺭﻗﻢﻫﺎﻱ ﺑﻴﺸﺘﺮ‬
‫‪w‬‬

‫ﺩﺭ ‪ 7SEGMENT‬ﻣﻲﺗﻮﺍﻥ ﭼﻨﺪ ‪ 7SEGMENT‬ﺭﺍ ﺑﻪ ﺻﻮﺭﺕ ﻣﺎﻟﺘﻲ ﭘﻠﻜﺲ ﺷﺪﻩ ﺍﺳﺘﻔﺎﺩﻩ ﻛﺮﺩ‪ ،‬ﺑﺪﻳﻦ‬
‫‪w‬‬

‫ﻼ ‪ a1‬ﺑﻪ‬
‫ﺻﻮﺭﺕ ﻛﻪ ﺗﻤﺎﻡ ﻗﺴﻤﺖﻫﺎ ﻳﻚ ‪ 7SEGMENT‬ﺑﻪ ‪ 7SEGMENT‬ﺑﻌﺪﻱ ﻧﻴﺰ ﻣﺘﺼﻞ ﺍﺳﺖ ﻣﺜ ﹰ‬
‫‪w‬‬

‫‪ a2‬ﻭ ﺑﻪ ‪ a3‬ﻭ‪...‬‬

‫ﺣﺎﻝ ﺍﮔﺮ ﻣﺎ ﭘﺎﻳﻪ ﻣﺸﺘﺮﻙ ﺁﻥﻫﺎ ﺭﺍ )ﺩﺭ ﺑﺮﺩ ﺁﻣﻮﺯﺷﻲ ﺁﻧﺪ( ﻧﻴﺰ ﻭﺻﻞ ﻛﻨﻴﻢ ﺑﻪ ﺻﻮﺭﺕ ﻫﻤﺰﻣﺎﻥ‬

‫ﻫﻤﻪ ‪segment٧‬ﻫﺎ ﻳﻚ ﻋﺪﺩ ﺭﺍ ﻧﻤﺎﻳﺶ ﻣﻲﺩﻫﻨﺪ ﺍﮔﺮ ﺑﻪ ﺻﻮﺭﺕ ﻣﻨﻈﻢ ﻭ ﺑﺮﻧﺎﻣﻪﺭﻳﺰﻱ ﺩﻗﻴﻖ ﺁﻧﺪﻫﺎ‬

‫ﺍﻧﺘﺨﺎﺏ ﺷﻮﻧﺪ ﺷﻤﺎ ﺧﻮﺍﻫﻴﺪ ﺗﻮﺍﻧﺴﺖ ﺭﻗﻢ ﺩﻟﺨﻮﺍﻩ ﺧﻮﺩ ﺭﺍ ﻧﻤﺎﻳﺶ ﺩﻫﻴﺪ‪.‬‬
‫ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش‬
‫اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ‬
‫ﻃﺮاﺣﯽ‪ ،‬ﺗﻮﻟﯿﺪ‪ ،‬اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ‬
‫آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ‬

‫ﺩﺭ ﺑﺮﺩ ﺁﻣﻮﺯﺷﻲ ﺁﻧﺪﻫﺎ ﺑﻪ ‪ P1.4‬ﻭ ‪ P1.5‬ﻣﺘﺼﻞ ﺷﺪﻩﺍﻧﺪ ﭘﺲ ﺍﮔﺮ ﻋﺪﺩ ‪ 15H‬ﺭﺍ ﺭﻭﻱ ‪ P1‬ﺑﺮﻳﺰﻳﻢ‬

‫ﻣﺸﺎﻫﺪﻩ ﺧﻮﺍﻫﻴﺪ ﻛﺮﺩ‪ .‬ﻋﺪﺩ ‪ ٥‬ﻧﻤﺎﻳﺶ ﺩﺍﺩﻩ ﻣﻲﺷﻮﺩ ﻭ ﻋﺪﺩ ﻳﻚ ﺭﻭﺷﻦ ﻛﻨﻨﺪﻩ ﺁﻧﺪ ‪ 7segment‬ﺳﻤﺖ‬

‫‪r‬‬
‫‪.i‬‬
‫ﺭﺍﺳﺘﻲ ﺍﺳﺖ‪.‬‬

‫‪s‬‬
‫‪r‬‬
‫‪e‬‬
‫‪k‬‬
‫‪a‬‬
‫‪lM‬‬
‫‪o‬‬
‫‪tr‬‬
‫‪n‬‬
‫‪o‬‬
‫‪.C‬‬
‫‪w‬‬
‫‪w‬‬
‫‪w‬‬
‫ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش‬
‫اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ‬
‫ﻃﺮاﺣﯽ‪ ،‬ﺗﻮﻟﯿﺪ‪ ،‬اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ‬
‫آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ‬

‫ﻧﻤﻮﻧﻪ ﺑﺮﻧﺎﻣﻪ )‪:(١٢‬‬

‫‪r‬‬
‫ﺑﺮﻧﺎﻣﻪ ﺯﻳﺮ ﻋﺪﺩ ‪ ٣‬ﺭﺍ ﺩﺭ ﺭﻗﻢ ﺍﻭﻝ ﻧﻤﺎﻳﺶ ﻣﻲﺩﻫﺪ‪.‬‬

‫‪.i‬‬
‫‪MAIN:‬‬
‫‪MOV P1,#13H‬‬

‫‪s‬‬
‫‪LOOP:JMP LOOP‬‬

‫‪r‬‬
‫‪END‬‬

‫‪e‬‬
‫ﻧﻤﻮﻧﻪ ﺑﺮﻧﺎﻣﻪ )‪ :(١٣‬ﺑﺮﻧﺎﻣﻪ ﺯﻳﺮ ﻋﺪﺩ ‪ ٤‬ﺭﺍ ﺩﺭ ﺭﻗﻢ ﺩﻭﻡ ﻧﻤﺎﻳﺶ ﻣﻲﺩﻫﺪ‪.‬‬

‫‪k‬‬
‫‪MAIN:‬‬

‫‪a‬‬
‫‪MOV P1,#24H‬‬
‫‪LOOP: JMP LOOP‬‬
‫‪lM‬‬
‫‪END‬‬
‫ﻧﻤﻮﻧﻪ ﺑﺮﻧﺎﻣﻪ )‪ :(١٤‬ﺑﺮﻧﺎﻣﻪ ﺯﻳﺮ ﻋﺪﺩ ‪ 34‬ﺭﺍ ﺭﻭﻱ ‪ 7SEGMENT‬ﻧﻤﺎﻳﺶ ﻣﻲﺩﻫﺪ‪.‬‬
‫‪MAIN:‬‬
‫‪o‬‬

‫‪MOV P1,#13H‬‬
‫‪NOP‬‬
‫‪tr‬‬

‫‪MOV P1,#24H‬‬
‫‪JMP MAIN‬‬
‫‪n‬‬

‫‪END‬‬
‫ﺩﺭ ﻣﺜﺎﻝ ﺑﺎﻻ ﺑﻪ ﺍﻳﻦ ﺩﻟﻴﻞ ﻛﻪ ﺳﺮﻳﻌﹶﺎ ﻋﺪﺩ ‪٣‬ﻭ ‪ ٤‬ﺭﻭﻱ ‪ 7SEGMENT‬ﻧﻤﺎﻳﺶ ﺩﺍﺩﻩ ﻣﻲﺷﻮﺩ ﻭ‬
‫‪o‬‬

‫ﻫﻤﭽﻨﻴﻦ ﺑﺎ ﺩﺭ ﻧﻈﺮ ﮔﺮﻓﺘﻦ ﺧﻄﺎﻱ ﺩﻳﺪ‪ ،‬ﭼﺸﻢ‪ ،‬ﺑﻴﻨﻨﺪﻩ ﻋﺪﺩ ‪ 34‬ﺭﺍ ﻣﺸﺎﻫﺪﻩ ﻣﻲﻛﻨﺪ‪.‬‬
‫‪.C‬‬
‫‪w‬‬
‫‪w‬‬
‫‪w‬‬
‫ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش‬
‫اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ‬
‫ﻃﺮاﺣﯽ‪ ،‬ﺗﻮﻟﯿﺪ‪ ،‬اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ‬
‫آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ‬

‫ﺷﺎﻳﺪ ﺍﻳﻦ ﺳﻮﺍﻝ ﺑﺮﺍﻱ ﺷﻤﺎ ﭘﻴﺶ ﺁﻳﺪ ﻛﻪ ﺍﮔﺮ ﻋﺪﺩ ﻣﺎ ﻳﻚ ﻋﺪﺩ ﺛﺎﺑﺖ ﻧﺒﻮﺩ ﻭ ﺑﻪ ﻃﻮﺭ ﻣﺪﺍﻭﻡ ﺗﻐﻴﻴﺮ‬

‫ﻛﻨﺪ ﭼﮕﻮﻧﻪ ﻣﻲﺗﻮﺍﻥ ﺍﻳﻦ ﻋﺪﺩ ﺭﺍ ﻧﻤﺎﻳﺶ ﺩﺍﺩ‪ .‬ﺩﺭ ﺍﻳﻦﺻﻮﺭﺕ ﻣﻲﺑﺎﻳﺴﺖ ﻫﺮ ﺭﻗﻢ ﺭﺍ ﺩﺍﺧﻞ ﻳﻚ ﺑﺎﻳﺖ‬

‫‪r‬‬
‫ﺭﻳﺨﺘﻪ ﻭ ﺗﻚﺗﻚ ﺁﻥﻫﺎ ﺭﺍ ﺭﻭﻱ ‪ 7SEGMENT‬ﺍﻧﺘﻘﺎﻝ ﺩﻫﻴﻢ‪.‬‬

‫‪.i‬‬
‫‪s‬‬
‫‪SHOW:‬‬

‫‪r‬‬
‫‪MOV A,VALUE‬‬

‫‪e‬‬
‫‪MOV B,10‬‬
‫‪DIV‬‬ ‫‪AB‬‬

‫‪k‬‬
‫‪ADD‬‬ ‫‪A,#10H‬‬

‫‪a‬‬
‫‪MOV P1,A‬‬
‫‪CALL DELAY‬‬
‫‪lM‬‬
‫‪ADD B,#20H‬‬
‫‪MOV P1,B‬‬
‫‪CALL DELAY‬‬
‫‪o‬‬

‫‪JMP SHOW‬‬
‫‪tr‬‬
‫‪n‬‬
‫‪o‬‬
‫‪.C‬‬
‫‪w‬‬
‫‪w‬‬
‫‪w‬‬
‫ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش‬
‫اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ‬
‫ﻃﺮاﺣﯽ‪ ،‬ﺗﻮﻟﯿﺪ‪ ،‬اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ‬
‫آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ‬

‫‪r‬‬
‫‪.i‬‬
‫ﻭﻗﻔﻪﻫﺎ‬

‫‪s‬‬
‫‪r‬‬
‫ﻭﻗﻔﻪ ﻳﻜﻲ ﺍﺯ ﻣﺒﺎﺣﺚ ﺍﺳﺎﺳﻲ ﺩﺭ ﻣﻴﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮﻫﺎ ﺍﺳﺖ ﻛﻪ ﺍﺣﺘﻴﺎﺝ ﺑﻪ ﺗﻮﺟﻪ ﻭﻳﮋﻩﺍﻱ ﺩﺍﺭﺩ‪.‬‬

‫‪e‬‬
‫‪k‬‬
‫ﺩﺭ ﺍﺑﺘﺪﺍ ﺑﺎﻳﺪ ﻭﻗﻔﻪ ﺭﺍ ﺗﻌﺮﻳﻒ ﻛﺮﺩ‪ .‬ﻣﻲﺗﻮﺍﻥ ﮔﻔﺖ ﻛﻪ ﻭﻗﻔﻪ ﻳﻌﻨﻲ ﺩﺭﺧﻮﺍﺳﺖ ﺍﺯ ‪ .CPU‬ﺑﺎ ﺗﻮﺟﻪ‬

‫‪a‬‬
‫ﺑﻪ ﺍﻳﻦ ﺗﻌﺮﻳﻒ ﻣﻲﺗﻮﺍﻥ ﻓﻬﻤﻴﺪ ﻛﻪ ﻭﻗﻔﻪ ﺑﺮﺍﻱ ﺍﻧﺠﺎﻡ ﻋﻤﻠﻲ ﻭﺍﺭﺩ ﻣﻲﺷﻮﺩ‪ .‬ﻫﻨﮕﺎﻡ ﻭﺍﺭﺩ ﺷﺪﻥ ﻳﻚ ﻭﻗﻔﻪ‬
‫‪lM‬‬

‫‪ cpu‬ﭼﻬﺎﺭ ﻛﺎﺭ ﺭﺍ ﺍﻧﺠﺎﻡ ﻣﻴﺪﻫﺪ ﻛﻪ ﺑﻪ ﺗﺮ ﺗﻴﺐ ﺯﻳﺮ ﺍﺳﺖ‪.‬‬


‫‪o‬‬

‫‪ -١‬ﻣﻨﺒﻊ ﻭﻗﻔﻪ ﺑﺮﺍﻱ ‪ CPU‬ﻣﺸﺨﺺ ﺍﺳﺖ‪.‬‬


‫‪tr‬‬

‫‪ -٢‬ﺁﺩﺭﺱ ﺑﺮﻧﺎﻣﻪﺍﻱ ﺭﺍ ﻛﻪ ﺑﺎﻳﺪ ﺍﻧﺠﺎﻡ ﺩﻫﺪ‪ ،‬ﺭﺍ ﻣﻲﺩﺍﻧﺪ ﻭ ﺑﻪ ﺁﻧﺠﺎ ﻣﻲﺭﻭﺩ‪.‬‬


‫‪n‬‬

‫‪ -٣‬ﺑﺮﻧﺎﻣﻪ ﻣﻮﺭﺩ ﻧﻈﺮ ﺭﺍ ﺩﺭ ﺁﻧﺠﺎ ﺍﻧﺠﺎﻡ ﻣﻲﺩﻫﺪ‪.‬‬


‫‪o‬‬
‫‪.C‬‬

‫‪ -٤‬ﺑﻌﺪ ﺍﺯ ﺍﻧﺠﺎﻡ ﺑﺮﻧﺎﻣﻪ ﻣﻮﺭﺩ ﻧﻈﺮ ﺑﻪ ﻣﻜﺎﻥ ﺍﻭﻟﻴﻪ ﻗﺒﻞ ﺍﺯ ﻭﺍﺭﺩ ﺷﺪﻥ ﺑﻪ ﻭﻗﻔﻪ ﺑﺮﻣﻲﮔﺮﺩﺩ ﻭ ﻛﺎﺭ ﺭﺍ‬
‫‪w‬‬

‫ﺍﺩﺍﻣﻪ ﻣﻲﺩﻫﺪ‪.‬‬
‫‪w‬‬

‫ﺩﺭ ‪ 89C51‬ﺩﺭ ﻣﺠﻤﻮﻉ ﭘﻨﺞ ﻣﻨﺒﻊ ﻭﻗﻔﻪ ﻭﺟﻮﺩ ﺩﺍﺭﺩ‪:‬‬


‫‪w‬‬

‫‪ Timer0‬ﺩﺭ ﻫﻨﮕﺎﻡ ﺳﺮﺭﻳﺰ‪.‬‬

‫‪ Timer1‬ﺩﺭ ﻫﻨﮕﺎﻡ ﺳﺮﺭﻳﺰ‪.‬‬

‫‪) External0‬ﺧﺎﺭﺟﻲ( ﺍﺯ ﻃﺮﻳﻖ ﭘﺎﻳﻪ ‪١٢‬‬

‫‪) External1‬ﺧﺎﺭﺟﻲ( ﺍﺯ ﻃﺮﻳﻖ ﭘﺎﻳﻪ ‪١٣‬‬


‫ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش‬
‫اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ‬
‫ﻃﺮاﺣﯽ‪ ،‬ﺗﻮﻟﯿﺪ‪ ،‬اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ‬
‫آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ‬

‫‪ Serial‬ﺩﺭ ﻫﻨﮕﺎﻡ ﻛﺎﻣﻞ ﺷﺪﻥ ﺩﺭﻳﺎﻓﺖ ﻳﺎ ﺍﺭﺳﺎﻝ‪.‬‬

‫ﺩﺭ ﺑﺎﻻ ﺷﺮﺍﻳﻄﻲ ﺭﺍ ﻛﻪ ﺑﺎﻋﺚ ﻭﺍﺭﺩ ﺷﺪﻥ ﻭﻗﻔﻪ ﺑﻪ ‪ CPU‬ﻣﻲﺷﻮﺩ ﻣﺸﺨﺺ ﺷﺪﻩﺍﺳﺖ‪ ،‬ﺣﺎﻝ ﺑﺎﻳﺪ‬

‫‪r‬‬
‫‪.i‬‬
‫ﺑﺪﺍﻧﻴﻢ ﻫﻨﮕﺎﻡ ﻭﺍﺭﺩ ﺷﺪﻥ ﻫﺮ ﻭﻗﻔﻪ ﭼﻪ ﺍﺗﻔﺎﻗﻲ ﻣﻲﺍﻓﺘﺪ‪.‬‬

‫‪s‬‬
‫ﺩﺭ ﻫﻨﮕﺎﻡ ﻭﺍﺭﺩ ﺷﺪﻥ ﻫﺮ ﻭﻗﻔﻪ ‪ CPU‬ﺑﻪ ﺧﺎﻧﻪ ﺧﺎﺻﻲ ﺍﺯ ﺣﺎﻓﻈﻪ )ﺩﺭ ﺟﺪﻭﻝ ﺯﻳﺮ ﺁﺩﺭﺱ ﺍﻳﻦ‬

‫‪r‬‬
‫‪e‬‬
‫ﻧﻘﺎﻁ ﮔﻔﺘﻪ ﺷﺪﻩ ﺍﺳﺖ( ﭘﺮﺵ ﻣﻲﻛﻨﺪ ﻭ ﺑﺮﻧﺎﻣﻪ ﺍﺯ ﺁﻥ ﺧﺎﻧﻪ ﺍﺩﺍﻣﻪ ﻣﻲﻳﺎﺑﺪ ﻭ ﺗﺎ ﺯﻣﺎﻧﻲ ﻛﻪ ﺑﻪ ﺩﺳﺘﻮﺭ‬

‫‪k‬‬
‫‪ RETI‬ﻧﺮﺳﻴﺪﻩ‪ CPU ،‬ﺑﺮﻧﺎﻣﻪ ﺭﺍ ﺍﺟﺮﺍ ﻣﻲﻛﻨﺪ ﺑﻪ ﻣﺤﺾ ﺭﺳﻴﺪﻥ ﺑﻪ ﺩﺳﺘﻮﺭ ‪ CPU ، RETI‬ﺑﻪ ﻣﺤﻠﻲ‬

‫‪a‬‬
‫‪lM‬‬
‫ﻛﻪ ﻭﻗﻔﻪ ﻭﺍﺭﺩ ﺷﺪﻩ ﺑﻮﺩ ﺑﺎﺯﮔﺸﺘﻪ ﻭ ﺍﺩﺍﻣﻪ ﻛﺎﺭ ﺧﻮﺩ ﺭﺍ ﺍﻧﺠﺎﻡ ﻣﻲﺩﻫﺪ ﺣﺎﻝ ﻛﺎﻓﻲ ﺍﺳﺖ ﺷﻤﺎ ﺑﺎ ﺩﺭ ﻧﻈﺮ‬

‫ﮔﺮﻓﺘﻦ ﺟﺪﻭﻝ ﺯﻳﺮ ﺑﺮﻧﺎﻣﻪﺍﻱ ﺭﺍ ﻛﻪ ﺑﺎﻳﺪ ﺩﺭ ﻫﻨﮕﺎﻡ ﻭﺍﺭﺩ ﺷﺪﻥ ﻭﻗﻔﻪ ﺍﺟﺮﺍ ﺷﻮﺩ ﺩﺭ ﻣﺤﻞ ﺧﺎﺹ ﺣﺎﻓﻈﻪ‬
‫‪o‬‬
‫‪tr‬‬

‫ﺑﻨﻮﻳﺴﻴﺪ‪.‬‬
‫‪n‬‬

‫‪IE‬‬
‫‪EA‬‬ ‫‪NU‬‬ ‫‪ET2‬‬ ‫‪ES‬‬ ‫‪ET1‬‬ ‫‪EX1‬‬ ‫‪ET0‬‬ ‫‪EX0‬‬
‫‪o‬‬
‫‪.C‬‬ ‫ﺍﺳﺘﻔﺎﺩﻩ ﻧﺸﺪﻩ‬
‫ﻓﻌﺎﻝ ﺳﺎﺯ‬

‫‪2BH‬‬

‫‪1BH‬‬

‫‪0BH‬‬
‫‪23H‬‬

‫‪13H‬‬

‫‪03H‬‬
‫ﻛﻠﻲ‬
‫‪w‬‬

‫ﺗﺎﻳﻤﺮ ‪ ٢‬ﺩﺭ‬ ‫ﺩﺭﮔﺎﻩ‬ ‫ﺧﺎﺭﺟﻲ‬ ‫ﺗﺎﻳﻤﺮ‬ ‫ﺧﺎﺭﺟﻲ‬


‫‪w‬‬

‫ﺗﺎﻳﻤﺮ ‪١‬‬
‫‪89C52‬‬ ‫ﺳﺮﻳﺎﻝ‬ ‫ﻳﻚ‬ ‫ﺻﻔﺮ‬ ‫ﺻﻔﺮ‬
‫‪w‬‬

‫ﺑﺎﻳﺖ ‪ IE‬ﺟﻬﺖ ﻣﺸﺨﺺ ﻧﻤﻮﺩﻥ ﻭ ﻓﻌﺎﻝ ﻛﺮﺩﻥ ﻭﻗﻔﻪ ﻣﻮﺭﺩ ﻧﻈﺮ ﺑﻪ ﻛﺎﺭ ﻣﻲﺭﻭﺩ ﻛﺎﻓﻲ ﺍﺳﺖ ﺷﻤﺎ‬

‫ﺑﻴﺖ ﻧﻈﻴﺮ ﻭﻗﻔﻪ ﻣﻮﺭﺩ ﺍﺳﺘﻔﺎﺩﻩ ﺩﺭ ﺑﺮﻧﺎﻣﻪ ﺭﺍ ﻫﻤﺮﺍﻩ ﺑﻴﺖ ‪ EA‬ﻓﻌﺎﻝ ﻛﻨﻴﺪ‪.‬‬

‫ﻣﺜﺎل‪ :‬ﭼﻪ ﻋﺪﺩﻱ ﺭﺍ ﻣﻲﺑﺎﻳﺴﺖ ﺩﺭ ‪ IE‬ﺑﺎﺭﮔﺬﺍﺭﻱ ﻛﺮﺩ ﻛﻪ ﻭﻗﻔﻪ ﺻﻔﺮ ﺧﺎﺭﺟﻲ ﻓﻌﺎﻝ ﺷﻮﺩ؟‬
‫ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش‬
‫اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ‬
‫ﻃﺮاﺣﯽ‪ ،‬ﺗﻮﻟﯿﺪ‪ ،‬اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ‬
‫آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ‬

‫‪IE‬‬
‫‪EA‬‬ ‫‪NU‬‬ ‫‪ET2‬‬ ‫‪ES‬‬ ‫‪ET1‬‬ ‫‪EX1‬‬ ‫‪ET0‬‬ ‫‪EX0‬‬

‫‪r‬‬
‫‪1‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪1‬‬

‫‪.i‬‬
‫‪8‬‬ ‫‪1‬‬

‫‪s‬‬
‫‪MOV IE,#81H‬‬

‫‪r‬‬
‫‪e‬‬
‫‪k‬‬
‫ﺑﺮﺍﻱ ﺍﻭﻟﻴﻦ ﻣﺜﺎﻝ ﺍﺯ ﻭﻗﻔﻪ ﺧﺎﺭﺟﻲ ﺍﺳﺘﻔﺎﺩﻩ ﻣﻲﻛﻨﻴﻢ‪ .‬ﭘﺎﻳﻪﻫﺎﻱ ‪١٢‬ﻭ‪ ١٣‬ﺩﺭ ﺭﻭﻱ ﭘﻮﺭﺕ ﺳﻪ ﻗﺮﺍﺭ‬

‫‪a‬‬
‫ﺩﺍﺭﻧﺪ ﻛﻪ ﻫﻤﺎﻥ ﮔﻮﻧﻪ ﻛﻪ ﻗﺒﻼ ﮔﻔﺘﻪ ﺷﺪ ﺑﺮﺍﻱ ﻛﺎﺭ ﻫﺎﻱ ﺧﺎﺹ ﺩﺭ ﻧﻈﺮ ﮔﺮﻓﺘﻪ ﺷﺪﻩﺍﻧﺪ‪.‬‬
‫‪lM‬‬

‫ﺑﺮﺍﻱ ﺍﻳﻨﻜﻪ ﻳﻚ ﻭﻗﻔﻪ ﺧﺎﺭﺟﻲ ﺭﺥ ﺩﻫﺪ ﺑﺎﻳﺪ ﺩﻭ ﺷﺮﻁ ﺭﻋﺎﻳﺖ ﺷﻮﺩ ﻛﻪ ﺑﺎ ﺩﺍﺷﺘﻦ ﺍﻳﻦ ﺩﻭ ﺷﺮﻁ‬
‫‪o‬‬

‫ﻭﻗﻔﻪ ﺧﺎﺭﺟﻲ ﺻﺎﺩﺭ ﻣﻲﺷﻮﺩ‪ .‬ﺍﻳﻦ ﺩﻭ ﺷﺮﻁ ﺑﻪ ﻗﺮﺍﺭ ﺯﻳﺮ ﻫﺴﺘﻨﺪ‪:‬‬


‫‪tr‬‬

‫ﺍﻟﻒ‪ :‬ﺛﺒﺎﺕ ‪ IE‬ﺭﺍ ﻃﻮﺭﻱ ﻣﻘﺪﺍﺭﺩﻫﻲ ﻛﻨﻴﻢ ﻛﻪ ﺣﺪﺍﻗﻞ ﻳﻜﻲ ﺍﺯ ﻭﻗﻔﻪﻫﺎﻱ ﺧﺎﺭﺟﻲ ﻗﺎﺑﻠﻴﺖ ﻓﻌﺎﻝ ﺷﺪﻥ ﺭﺍ‬
‫‪n‬‬
‫‪o‬‬

‫ﺩﺍﺷﺘﻪ ﺑﺎﺷﻨﺪ‪.‬‬
‫‪.C‬‬

‫ﺏ‪ :‬ﺷﺮﻁ ﺩﻭﻡ ﻭﺍﺭﺩ ﺁﻣﺪﻥ ﻳﻚ ﭘﺎﻟﺲ ﺑﻪ ﻳﻜﻲ ﺍﺯ ﭘﺎﻳﻪﻫﺎﻱ ‪١٢‬ﻳﺎ ‪ ١٣‬ﺑﺘﺮﺗﻴﺐ ﺑﺮﺍﻱ ﻭﻗﻔﻪ ﺧﺎﺭﺟﻪ ﺻﻔﺮ ﻳﺎ‬
‫‪w‬‬

‫ﻭﻗﻔﻪ ﺧﺎﺭﺟﻲ ﻳﻚ ﺍﺳﺖ‪.‬‬


‫‪w‬‬
‫‪w‬‬
‫ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش‬
‫اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ‬
‫ﻃﺮاﺣﯽ‪ ،‬ﺗﻮﻟﯿﺪ‪ ،‬اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ‬
‫آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ‬

‫ﻧﻤﻮﻧﻪ ﺑﺮﻧﺎﻣﻪ )‪:(١٥‬‬


‫ﺑﺮﻧﺎﻣﻪﺍﻱ ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﺩﺭ ﺻﻮﺭﺕ ﻭﺍﺭﺩ ﺷﺪﻥ ﻳﻚ ﭘﺎﻟﺲ ﺑﻪ ﭘﺎﻳﻪ ‪ ١٢‬ﻫﻤﻪ ﭘﺎﻳﻪﻫﺎﻱ ﭘﻮﺭﺕ ﻳﻚ‬

‫‪r‬‬
‫ﺻﻔﺮ ﺷﻮﺩ‪.‬‬

‫‪.i‬‬
‫‪s‬‬
‫‪ORG 0‬‬

‫‪r‬‬
‫‪JMP MAIN‬‬

‫‪e‬‬
‫‪ORG 03H‬‬

‫‪k‬‬
‫‪INTEXTERNAL:‬‬
‫‪MOV P1,#00H‬‬
‫‪RETI‬‬
‫‪a‬‬
‫‪lM‬‬
‫‪MAIN:‬‬
‫‪MOV IE,#81H‬‬
‫‪o‬‬

‫‪SETB IT0‬‬
‫‪tr‬‬

‫‪SJMP $‬‬
‫‪END‬‬
‫‪n‬‬

‫ﺩﺭ ﺑﺮﻧﺎﻣﻪ ﻓﻮﻕ ﺍﺑﺘﺪﺍ ﺑﺎ ﭘﺮﺵ ﺑﻪ ‪ MAIN‬ﺧﺎﻧﻪ ‪ 3H‬ﻛﻪ ﻣﺮﺑﻮﻁ ﺑﻪ ﻭﻗﻔﻪ ﺧﺎﺭﺟﻲ ﻳﻚ ﺑﻮﺩﻩ ﺭﺍ ﭘﺮﺵ‬
‫‪o‬‬
‫‪.C‬‬

‫ﻛﺮﺩﻳﻢ ﺗﺎ ﻓﻀﺎﻱ ﺑﺮﻧﺎﻣﻪ ﻭﻗﻔﻪ ﺭﺍ ﺧﺎﻟﻲ ﻧﮕﻪ ﺩﺍﺷﺘﻪ ﺑﺎﺷﻴﻢ ﺩﺭ ‪ MAIN‬ﻭﻗﻔﻪ ﻣﻮﺭﺩ ﻧﻈﺮ ﻓﻌﺎﻝ ﺷﺪﻩ ﻭ ‪IT0‬‬

‫ﻳﻚ ﺷﺪﻩ ﺍﺳﺖ‪.‬‬


‫‪w‬‬

‫ﺑﻴﺖ‪ IT0‬ﻣﺸﺨﺺ ﻛﻨﻨﺪﻩ ﻓﻌﺎﻝﺳﺎﺯﻱ ﻭﻗﻔﻪ ﺧﺎﺭﺟﻲ ﺻﻔﺮ ﺩﺭ ﻟﺒﻪ ﭘﺎﻟﺲ ﻳﺎ ﺳﻄﺢ ﺻﻔﺮ ﭘﺎﻟﺲ‬
‫‪w‬‬
‫‪w‬‬

‫ﺍﺳﺖ‪.‬‬

‫ﺷﻤﺎ ﻣﻲﺗﻮﺍﻧﻴﺪ ﺑﺎ ﺯﺩﻥ ﻛﻠﻴﺪ ﻭﻗﻔﻪ ﺭﻭﻱ ﺑﺮﺩ ﺁﻣﻮﺯﺷﻲ ﻳﻚ ﭘﺎﻟﺲ ﺭﻭﻱ ﭘﺎﻳﻪ ‪ ١٣‬ﺍﻳﺠﺎﺩ ﻧﻤﺎﻳﻴﺪ‪.‬‬

‫وارد ﺷﺪن وﻗﻔﻪ درﺣﺎﻟﺖ ﻟﺒﻪ‬


‫ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش‬
‫اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ‬
‫ﻃﺮاﺣﯽ‪ ،‬ﺗﻮﻟﯿﺪ‪ ،‬اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ‬
‫آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ‬

‫وارد ﺷﺪن وﻗﻔﻪ درﺣﺎﻟﺖ ﺳﻄﺢ‬

‫‪r‬‬
‫‪.i‬‬
‫‪ IT0‬ﻧﻴﺰ ﻣﺮﺑﻮﻁ ﺑﻪ ﻭﻗﻔﻪ ﺧﺎﺭﺟﻲ ﺻﻔﺮ ﺍﺳﺖ‪.‬‬

‫‪s‬‬
‫ﺍﮔﺮ ‪ IT=0‬ﻭﻗﻔﻪ ﺣﺴﺎﺱ ﺑﻪ ﺳﻄﺢ ﺧﻮﺍﻫﺪ ﺑﻮﺩ‪.‬‬

‫‪r‬‬
‫‪e‬‬
‫ﺍﮔﺮ ‪ IT=1‬ﻭﻗﻔﻪ ﺣﺴﺎﺱ ﺑﻪ ﻟﺒﻪ‬

‫‪k‬‬
‫‪a‬‬
‫ﺣﺎﻝ ﺍﮔﺮ ﺷﻤﺎ ﺑﺎ ﻛﻠﻴﺪ ﺑﺮ ﺭﻭﻱ ﺑﺮﺩ ﺁﻣﻮﺯﺷﻲ ﻳﻚ ﭘﺎﻟﺲ ﺍﻳﺠﺎﺩ ﻧﻤﺎﻳﻴﺪ ‪ LED‬ﻫﺎﻱ ﺭﻭﻱ ﺑﺮﺩ‬
‫‪lM‬‬
‫ﺁﻣﻮﺯﺷﻲ ﺭﻭﺷﻦ ﻣﻲﺷﻮﺩ‪.‬‬
‫‪o‬‬

‫ﻭﻗﻔﻪﻫﺎﻯ ﺗﺎﻳﻤﺮ‪:‬‬
‫‪tr‬‬

‫ﺣﺎﻝ ﺑﻪ ﺑﺮﺭﺳﻲ ﭼﮕﻮﻧﮕﻲ ﺭﺥ ﺩﺍﺩﻥ ﻭﻗﻔﻪﻫﺎﻱ ﺗﺎﻳﻤﺮ ﻣﻲﭘﺮﺩﺍﺯﻳﻢ‪.‬‬


‫‪n‬‬

‫ﺑﺮﺍﻱ ﻭﻗﻮﻉ ﻳﻚ ﻭﻗﻔﻪ ﺗﺎﻳﻤﺮﻱ ﻫﻢ ﺩﻭ ﺷﺮﻁ ﻻﺯﻡ ﺍﺳﺖ‪ .‬ﮔﺎﻫﻲ ﺍﻭﻗﺎﺕ ﺍﺣﺘﻴﺎﺝ ﺩﺍﺭﻳﻢ ﻛﻪ ﺍﺗﻔﺎﻕ‬
‫‪o‬‬
‫‪.C‬‬

‫ﺧﺎﺻﻲ ﺩﺭ ﻓﻮﺍﺻﻞ ﺯﻣﺎﻧﻲ ﻣﻌﻴﻨﻲ ﺭﺥ ﺩﻫﺪ ﺑﺮﺍﻱ ﺍﻳﻨﻜﺎﺭ ﻣﻲﺗﻮﺍﻥ ﺍﺯ ﻭﻗﻔﻪ ﺗﺎﻳﻤﺮﻱ ﺍﺳﺘﻔﺎﺩﻩ ﻛﺮﺩ‪.‬‬
‫‪w‬‬

‫ﺷﺮﺍﻳﻂ ﻭﻗﻮﻉ ﻭﻗﻔﻪ ﺗﺎﻳﻤﺮﻯ‪:‬‬


‫‪w‬‬

‫ﺍﻟﻒ‪ :‬ﺛﺒﺎﺕ ‪ IE‬ﺭﺍ ﻃﻮﺭﻱ ﻣﻘﺪﺍﺭﺩﻫﻲ ﻛﻨﻴﻢ ﻛﻪ ﺣﺪﺍﻗﻞ ﻳﻜﻲ ﺍﺯ ﻭﻗﻔﻪﻫﺎﻱ ﺗﺎﻳﻤﺮﻱ ﻗﺎﺑﻠﻴﺖ ﻓﻌﺎﻝ ﺷﺪﻥ‬
‫‪w‬‬

‫ﺭﺍ ﺩﺍﺷﺘﻪ ﺑﺎﺷﻨﺪ‪.‬‬

‫ﺏ‪ :‬ﺳﺮﺭﻳﺰ ﺷﺪﻥ ﺗﺎﻳﻤﺮ) ‪ .( TF=1‬ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ ﻣﺪﺕ ﺯﻣﺎﻧﻲ ﻛﻪ ﺩﺭ ﺗﺎﻳﻤﺮ ﺑﺎﺭﮔﺬﺍﺭﻱ ﺷﺪﻩ ﺑﺎ ﺗﻤﺎﻡ‬

‫ﺷﺪﻥ ﺍﻳﻦ ﺯﻣﺎﻥ ﭘﺮﭼﻢ ‪ TF‬ﺑﺮﺍﺑﺮ ﻳﻚ ﻣﻲﺷﻮﺩ‪.‬‬

‫ﺑﺮﺍﻱ ﺭﻭﺷﻦ ﺷﺪﻥ ﺍﻳﻦ ﻣﻮﺿﻮﻉ ﺑﻪ ﺣﻞ ﻳﻚ ﺗﻤﺮﻳﻦ ﻣﻲﭘﺮﺩﺍﺯﻳﻢ‪.‬‬


‫ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش‬
‫اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ‬
‫ﻃﺮاﺣﯽ‪ ،‬ﺗﻮﻟﯿﺪ‪ ،‬اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ‬
‫آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ‬

‫ﻧﻤﻮﻧﻪ ﺑﺮﻧﺎﻣﻪ )‪:(١٦‬‬

‫‪r‬‬
‫ﺑﺮﻧﺎﻣﻪﺍﻱ ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﻣﻮﺝ ﻣﺮﺑﻌﻲ ‪ 8KHz‬ﺭﻭﻱ ﭘﺎﻳﻪ ‪ P1.6‬ﺗﻮﻟﻴﺪ ﻧﻤﺎﻳﺪ‪.‬‬

‫‪.i‬‬
‫‪ORG 0H‬‬

‫‪s‬‬
‫‪JMP MAIN‬‬

‫‪r‬‬
‫‪ORG 0BH‬‬

‫‪e‬‬
‫‪CPL P1.6‬‬

‫‪k‬‬
‫‪RETI‬‬

‫‪a‬‬
‫‪MAIN:‬‬
‫‪lM‬‬
‫‪MOV IE,#82H‬‬
‫‪MOV TMOD,#02H‬‬
‫‪MOV TH0,#62‬‬
‫‪o‬‬

‫‪SETB TR0‬‬
‫‪tr‬‬

‫‪SJMP $‬‬
‫‪n‬‬

‫‪END‬‬
‫‪o‬‬
‫‪.C‬‬

‫ﺩﺭ ﺑﺮﻧﺎﻣﻪ ﻓﻮﻕ ﺍﺑﺘﺪﺍ ﺑﺎ ﭘﺮﺵ ﺑﻪ ‪ MAIN‬ﺧﺎﻧﻪﻫﺎﻱ ﺣﺎﻓﻈﻪ ﺭﺍ ﺑﺮﺍﻱ ﻧﻮﺷﺘﻦ ﺑﺮﻧﺎﻣﻪ ﻭﻗﻔﻪ ﺧﺎﻟﻲ‬
‫‪w‬‬

‫ﻧﮕﻪﺩﺍﺷﺘﻴﻢ‪.‬‬
‫‪w‬‬

‫ﺛﺒﺎﺕ ﻛﻨﺘﺮﻝ ﻭﻗﻔﻪ )‪ (IE‬ﺭﺍ ﺑﺎ ﻋﺪﺩ ‪ ٨٢‬ﺟﻬﺖ ﻓﻌﺎﻝﺳﺎﺯﻱ ﻭﻗﻔﻪ ﺗﺎﻳﻤﺮ ﺻﻔﺮ ﻭ ‪ EA‬ﺑﺎﺭﮔﺬﺍﺭﻱ‬
‫‪w‬‬

‫ﻧﻤﻮﺩﻳﻢ‪.‬‬

‫ﺟﻬﺖ ﺍﻳﺠﺎﺩ ﻳﻚ ﺷﻜﻞ ﻣﻮﺝ ﻣﺮﺑﻌﻲ ﻛﺎﻓﻲ ﺍﺳﺖ ﺁﻥ ﭘﺎﻳﻪ ﻣﻌﻜﻮﺱ ﺷﻮﺩ ﻭ ﺳﺮﻋﺖ ﻣﻌﻜﻮﺱ‬

‫ﺷﺪﻥ ﻫﻤﺎﻥ ﻓﺮﻛﺎﻧﺲ ﻣﻮﺝ ﺍﻳﺠﺎﺩ ﺷﺪﻩ ﺧﻮﺍﻫﺪ ﺑﻮﺩ‪.‬‬

‫‪125 µs‬‬ ‫ﺍﮔﺮ ﺑﺨﻮﺍﻫﻴﻢ ﻳﻚ ﺷﻜﻞ ﻣﻮﺝ ﻣﺮﺑﻌﻲ ‪ 8KHz‬ﺩﺍﺷﺘﻪ ﺑﺎﺷﻴﻢ‪:‬‬

‫‪62 µs‬‬
‫ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش‬
‫اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ‬
‫ﻃﺮاﺣﯽ‪ ،‬ﺗﻮﻟﯿﺪ‪ ،‬اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ‬
‫آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ‬

‫‪r‬‬
‫‪.i‬‬
‫‪ = 1000000/8000‬ﻣﻘﺪﺍﺭ ﺑﺎﺭﮔﺬﺍﺭﻱ ﺩﺭ ﺗﺎﻳﻤﺮ‬

‫‪s‬‬
‫‪ = 125 µs/ 2 = 62.5 ~ 62 µs‬ﻣﻘﺪﺍﺭ ﺑﺎﺭﮔﺬﺍﺭﻱ ﺩﺭ ﺗﺎﻳﻤﺮ‬

‫‪r‬‬
‫‪e‬‬
‫‪k‬‬
‫ﻧﻤﻮﻧﻪ ﺩﻳﮕﺮﻱ ﺍﺯ ﻛﺎﺭﺑﺮﺩ ﻭﻗﻔﻪﻫﺎﻱ ﺗﺎﻳﻤﺮﻱ ﺭﺍ ﺩﺭ ﺗﻤﺮﻳﻦ ﺯﻳﺮ ﻣﺸﺎﻫﺪﻩ ﻣﻲﻓﺮﻣﺎﻳﻴﺪ‪.‬‬

‫‪a‬‬
‫‪lM‬‬
‫ﻧﻤﻮﻧﻪ ﺑﺮﻧﺎﻣﻪ )‪:(١٧‬‬
‫ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﻭﻗﻔﻪ ﺗﺎﻳﻤﺮ ﺑﺮﻧﺎﻣﻪﺍﻱ ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﺑﺎﻳﺖ ‪ SEG1‬ﻭ‪ SEG2‬ﺭﺍ ﺭﻭﻱ ﺧﺎﻧﻪ ﺍﻭﻝ ﻭ ﺩﻭﻡ‬
‫‪o‬‬

‫‪7SEGMENT‬ﺑﺮﺩ ﺁﻣﻮﺯﺷﻲ ﻧﻤﺎﻳﺶ ﺩﻫﺪ‪.‬‬


‫‪tr‬‬
‫‪n‬‬

‫‪SEG1‬‬ ‫‪EQU 30H‬‬


‫‪SEG2‬‬ ‫‪EQU 31H‬‬
‫‪o‬‬
‫‪.C‬‬

‫‪ORG 0H‬‬
‫‪JMP MAIN‬‬
‫‪ORG 0BH‬‬
‫‪w‬‬

‫‪CLR TR0‬‬
‫‪MOV TH0,#0ECH‬‬
‫‪w‬‬

‫‪MOV TL0,#078H‬‬
‫‪MOV P1,SEG1‬‬
‫‪w‬‬

‫‪SETB P1.4‬‬
‫‪CALL DELAY‬‬
‫‪CLR P1.4‬‬
‫‪MOV P1,SEG2‬‬
‫‪SETB P1.4‬‬
‫‪CALL DELAY‬‬
‫‪CLR P1.4‬‬
‫‪SETB TR0‬‬
‫‪RETI‬‬
‫ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش‬
‫اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ‬
‫ اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ‬،‫ ﺗﻮﻟﯿﺪ‬،‫ﻃﺮاﺣﯽ‬
‫آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ‬

MAIN:
MOV IE,#82H
MOV TMOD,#11H

r
MOV TH0,#0ECH
MOV TL0,#78H

.i
SETB TR0

s
SJMP $

r
DELAY:

e
MOV TH1,#0FCH
MOV TL1,#18H

k
SETB TR1
LOOPDELAY:JNB TF1,LOOPDELAY

a
CLR TR1
lM
CLR TF1
RET
END
o
tr
n
o
.C
w
w
w
‫ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش‬
‫اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ‬
‫ﻃﺮاﺣﯽ‪ ،‬ﺗﻮﻟﯿﺪ‪ ،‬اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ‬
‫آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ‬

‫ﻧﻤﻮﻧﻪ ﺗﻤﺮﻳﻨﻰ )‪:(١٨‬‬


‫ﺩﺭ ﻧﻤﻮﻧﻪ ﺑﺮ ﻧﺎﻣﻪ ‪ ١٥‬ﭼﮕﻮﻧﮕﻲ ﺗﻮﻟﻴﺪ ﻛﺮﺩﻥ ﻳﻚ ﺷﻜﻞ ﻣﻮﺝ ﺭﺍ ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﻭﻗﻔﻪ ﺗﺎﻳﻤﺮ ﻣﺸﺎﻫﺪﻩ‬

‫‪r‬‬
‫‪.i‬‬
‫ﻛﺮﺩﻳﺪ ﺩﺭ ﺗﻤﺮﻳﻦ ﺯﻳﺮ ﭼﮕﻮﻧﮕﻲ ﺗﻮﻟﻴﺪ ﺩﻭ ﺷﻜﻞ ﻣﻮﺝ ﻣﺨﺘﻠﻒ ﺭﺍ ﺑﻪ ﺻﻮﺭﺕ ﻫﻤﺰﻣﺎﻥ ﻣﺸﺎﻫﺪﻩ ﻣﻲﻛﻨﻴﺪ‪.‬‬

‫‪s‬‬
‫ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﻭﻗﻔﻪ ﺗﺎﻳﻤﺮ ﺩﻭ ﺷﻜﻞ ﻣﻮﺝ ‪7KH‬ﻭ ‪ 500H‬ﺗﻮﻟﻴﺪ ﻛﻨﻴﺪ‪.‬‬

‫‪r‬‬
‫‪e‬‬
‫‪ORG‬‬ ‫‪00H‬‬

‫‪k‬‬
‫‪JMP‬‬ ‫‪MAIN‬‬
‫‪ORG‬‬ ‫‪0BH‬‬

‫‪a‬‬
‫‪JMP‬‬ ‫‪TS0‬‬
‫‪lM‬‬
‫‪ORG‬‬ ‫‪1BH‬‬
‫‪JMP‬‬ ‫‪TS1‬‬

‫‪MAIN:‬‬
‫‪o‬‬

‫‪MOV‬‬ ‫‪TMOD,#12H‬‬
‫‪MOV‬‬ ‫‪TH0,#-71‬‬
‫‪tr‬‬

‫‪SETB‬‬ ‫‪TR0‬‬
‫‪SETB‬‬ ‫‪TF1‬‬
‫‪n‬‬

‫‪MOV‬‬ ‫‪IE,#8AH‬‬
‫‪SJMP‬‬ ‫‪$‬‬
‫‪o‬‬

‫‪TS0:‬‬
‫‪.C‬‬

‫‪CPL P1.7‬‬
‫‪RETI‬‬
‫‪w‬‬

‫‪TS1:‬‬
‫‪CLR‬‬ ‫‪TR1‬‬
‫‪w‬‬

‫‪MOV‬‬ ‫)‪TH1,#HIGH(-1000‬‬
‫‪MOV‬‬ ‫)‪TL1,#LOW(-1000‬‬
‫‪SETB‬‬ ‫‪TR1‬‬
‫‪w‬‬

‫‪CPL‬‬ ‫‪P1.6‬‬
‫‪RETI‬‬
‫‪END‬‬
‫ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش‬
‫اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ‬
‫ﻃﺮاﺣﯽ‪ ،‬ﺗﻮﻟﯿﺪ‪ ،‬اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ‬
‫آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ‬

‫ﻧﮑﺘﻪ‪ :‬ﻓﺮﻛﺎﻧﺲﻫﺎﻱ ﺯﻳﺮ ‪ 1KHZ‬ﺭﺍ ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﺣﺎﻟﺖ ﻳﻚ ﺗﺎﻳﻤﺮ ﻣﻲﺗﻮﺍﻥ ﺗﻮﻟﻴﺪ ﻛﺮﺩ‪ .‬ﭘﺲ ﺑﺮﺍﻱ‬

‫ﺗﻮﻟﻴﺪ ﺷﻜﻞ ﻣﻮﺝ ‪ 7KHZ‬ﺍﺯﺣﺎﻟﺖ ﺩﻭ ﺗﺎﻳﻤﺮ ﺻﻔﺮ ﻭ ﺑﺮﺍﻱ ﺗﻮﻟﻴﺪ ﺷﻜﻞ ﻣﻮﺝ ‪ 500HZ‬ﺍﺯ ﺣﺎﻟﺖ ﻳﻚ‪،‬‬

‫‪r‬‬
‫‪.i‬‬
‫ﺗﺎﻳﻤﺮ ﻳﻚ ﺍﺳﺘﻔﺎﺩﻩ ﻣﻲﻛﻨﻴﻢ‪.‬‬

‫‪s‬‬
‫ﻫﻤﺎﻥﮔﻮﻧﻪ ﻛﻪ ﻣﻲﺩﺍﻧﻴﻢ ﻭﻗﻔﻪ ﺗﺎﻳﻤﺮ ﻭﻗﺘﻲ ﻓﻌﺎﻝ ﻣﻲﺷﻮﺩ ﻛﻪ ﺩﻭ ﺷﺮﻁ ﺑﺎﺭﮔﺬﺍﺭﻱ ﺻﺤﻴﺢ ‪ IE‬ﻭ‬

‫‪r‬‬
‫‪e‬‬
‫ﺳﺮﺭﻳﺰ ﺷﺪﻥ ﺗﺎﻳﻤﺮ ﺑﻪ ﻭﺟﻮﺩ ﺁﻳﺪ ﺑﻨﺎﺑﺮﺍﻳﻦ ﺑﺮﺍﻱ ﺗﻮﻟﻴﺪ ﻓﺮﻛﺎﻧﺲ ‪ 7KHZ‬ﺑﻪ ﺭﺍﺣﺘﻲ ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﻭﻗﻔﻪ‬

‫‪k‬‬
‫‪a‬‬
‫ﺗﺎﻳﻤﺮ ﺻﻔﺮ ﻭﺣﺎﻟﺖ ﻳﻚ ﺁﻥ ﻣﻲﺗﻮﺍﻥ ﺍﻳﻦ ﻛﺎﺭ ﺭﺍ ﺍﻧﺠﺎﻡ ﺩﺍﺩ‪.‬‬
‫‪lM‬‬
‫ﺑﺮﺍﻱ ﺗﻮﻟﻴﺪ ﻓﺮﻛﺎﻧﺲ ‪ 500HZ‬ﺍﺑﺘﺪﺍ ﺩﺭ ﺁﺩﺭﺱ‪ 1BH‬ﻛﻪ ﻣﺤﻞ ﭘﺮﺵ ﻭﻗﻔﻪ ﺗﺎﻳﻤﺮ ﻳﻚ ﺍﺳﺖ‬

‫ﺑﺮﻧﺎﻣﻪﺍﻱ ﺑﺮﺍﻱ ﺗﻮﻟﻴﺪ ﺍﻳﻦ ﻣﻮﺝ ﻣﻲﻧﻮﻳﺴﻴﻢ ﻭﺣﺎﻻ ﺑﺮﺍﻱ ﺍﺟﺮﺍ ﺷﺪﻥ ﺍﻳﻦ ﺑﺮﻧﺎﻣﻪ ﻛﺎﻓﻲ ﺍﺳﺖ ﻛﻪ ﻭﻗﻔﻪ ﺗﺎﻳﻤﺮ‬
‫‪o‬‬
‫‪tr‬‬

‫ﻼ ﺍﻧﺠﺎﻡ ﺩﺍﺩﻩﺍﻳﻢ‬
‫ﻳﻚ ﺩﻭ ﺷﺮﻁ ﻓﻌﺎﻝ ﺷﺪﻥ ﻭﻗﻔﻪﻫﺎ ﺭﺍ ﺩﺍﺷﺘﻪ ﺑﺎﺷﺪ‪ .‬ﺷﺮﻁ ﺑﺎﺭﮔﺬﺍﺭﻱ ﺛﺒﺎﺕ ﻭﻗﻔﻪ ﺭﺍ ﻛﻪ ﻗﺒ ﹰ‬
‫‪n‬‬

‫ﻭ ﺑﺮﺍﻱ ﺍﻳﻨﻜﻪ ﺷﺮﻁ ﺩﻭﻡ ‪ TF=1‬ﺭﺍ ﻓﺮﺍﻫﻢ ﻛﻨﻴﻢ ﺩﺭ ﻗﺴﻤﺖ ‪ MAIN‬ﺑﺮﻧﺎﻣﻪ ﺍﻳﻦ ﻛﺎﺭ ﺍﻧﺠﺎﻡ ﻣﻲﺩﻫﻴﻢ‪.‬‬
‫‪o‬‬

‫ﺑﻨﺎﺑﺮﺍﻳﻦ ﺑﻌﺪ ﺍﺯ ﻫﺮ ﻭﻗﻔﻪ ﻛﻪ ﺗﺎﻳﻤﺮ ﺻﻔﺮ ﺍﻳﺠﺎﺩ ﻣﻲﻛﻨﺪ ﺧﻮﺩ ﺑﻪ ﺧﻮﺩ ﺑﺮﻧﺎﻣﻪ ﺑﻪ ‪ TF1=1‬ﻣﻲﺭﺳﺪ ﻭ ﺑﻪ‬
‫‪.C‬‬

‫ﺁﺩﺭﺱ ‪ 1BH‬ﻣﻲﺭﻭﺩ ﻭﺩﺭ ﺁﻧﺠﺎ ﺷﻜﻞ ﻣﻮﺝ ‪500HZ‬ﺭﺍ ﻫﻤﺰﻣﺎﻥ ﺑﺎ ﻓﺮﻛﺎﻧﺲ ‪ 7KHZ‬ﺍﻳﺠﺎﺩ ﻣﻲﻛﻨﻴﻢ‪.‬‬
‫‪w‬‬
‫‪w‬‬

‫ﺳﻄﺢ ﺗﻘﺪﻡ ﻭﻗﻔﻪﻫﺎ‪:‬‬


‫‪w‬‬

‫)‪(MSB‬‬ ‫)‪(LSB‬‬
‫‪-‬‬ ‫‪-‬‬ ‫‪PT2‬‬ ‫‪PS‬‬ ‫‪PT1‬‬ ‫‪PX1‬‬ ‫‪PTO‬‬ ‫‪PXO‬‬

‫ﻋﻤﻠﻜﺮﺩ‬ ‫ﻣﻮﻗﻌﻴﺖ‬ ‫ﻧﻤﺎﺩ‬


‫ﺭﺯﺭﻭ ﺷﺪﻩ‬ ‫‪IP.7‬‬ ‫‪-‬‬
‫ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش‬
‫اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ‬
‫ﻃﺮاﺣﯽ‪ ،‬ﺗﻮﻟﯿﺪ‪ ،‬اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ‬
‫آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ‬

‫ﺭﺯﺭﻭ ﺷﺪﻩ‬ ‫‪IP.6‬‬ ‫‪-‬‬

‫ﺑﺮﺍﻱ ﺗﻌﻴﻴﻦ ﺳﻄﺢ ﺗﻘﺪّﻡ ﻭﻗﻔﻪ ﺗﺎﻳﻤﺮ ‪ 2‬ﺑﻜﺎﺭ ﻣﻲ ﺭﻭﺩ‪.‬‬ ‫‪IP.5‬‬ ‫‪PT2‬‬

‫ﺍﮔﺮ ‪ PT2 = 1‬ﺑﺎﺷﺪ‪ .‬ﺍﻳﻦ ﻭﻗﻔﻪ ﺩﺭ ﺳﻄﺢ ﺗﻘﺪﻡ ﺑﺎﻻﺗﺮ ﻗﺮﺍﺭ ﻣﻲﮔﻴﺮﺩ‪.‬‬

‫‪r‬‬
‫‪.i‬‬
‫ﺑﺮﺍﻱ ﺗﻌﻴﻴﻦ ﺳﻄﺢ ﺗﻘﺪﻡ ﻭﻗﻔﻪ ﺩﺭﮔﺎﻩ ﺳﺮﻳﺎﻝ ﺑﻜﺎﺭ ﻣﻲ ﺭﻭﺩ‪.‬‬ ‫‪IP.4‬‬ ‫‪PS‬‬

‫‪s‬‬
‫ﺍﮔﺮ ‪ PS = 1‬ﺑﺎﺷﺪ‪ ،‬ﺍﻳﻦ ﻭﻗﻔﻪ ﺩﺭ ﺳﻄﺢ ﺗﻘﺪﻡ ﺑﺎﻻﺗﺮ ﻗﺮﺍﺭ ﻣﻲﮔﻴﺮﺩ‪.‬‬

‫‪r‬‬
‫ﺑﺮﺍﻱ ﺗﻌﻴﻴﻦ ﺳﻄﺢ ﺗﻘﺪﻡ ﻭﻗﻔﻪ ﺗﺎﻳﻤﺮ ‪ 1‬ﺑﻜﺎﺭ ﻣﻲ ﺭﻭﺩ‪.‬‬ ‫‪IP.3‬‬ ‫‪PT1‬‬

‫‪e‬‬
‫ﺍﮔﺮ ‪ PT1 = 1‬ﺑﺎﺷﺪ‪ ،‬ﺍﻳﻦ ﻭﻗﻔﻪ ﺩﺭ ﺳﻄﺢ ﺗﻘﺪﻡ ﺑﺎﻻﺗﺮ ﻗﺮﺍﺭ ﻣﻲﮔﻴﺮﺩ‪.‬‬

‫‪k‬‬
‫ﺑﺮﺍﻱ ﺗﻌﻴﻴﻦ ﺳﻄﺢ ﺗﻘﺪﻡ ﻭﻗﻔﻪ ﺗﺎﻳﻤﺮ ‪ 0‬ﺑﻜﺎﺭ ﻣﻲ ﺭﻭﺩ‪.‬‬ ‫‪IP.1‬‬ ‫‪PT0‬‬

‫‪a‬‬
‫ﺍﮔﺮ ‪ PT0 = 1‬ﺑﺎﺷﺪ‪ ،‬ﺍﻳﻦ ﻭﻗﻔﻪ ﺩﺭ ﺳﻄﺢ ﺗﻘﺪﻡ ﺑﺎﻻﺗﺮ ﻗﺮﺍﺭ ﻣﻲﮔﻴﺮﺩ‪.‬‬
‫‪lM‬‬
‫ﺑﺮﺍﻱ ﺗﻌﻴﻴﻦ ﺳﻄﺢ ﺗﻘﺪﻡ ﻭﻗﻔﻪ ﺧﺎﺭﺟﻲ ‪ 0‬ﺑﻜﺎﺭ ﻣﻲ ﺭﻭﺩ‪.‬‬ ‫‪IP.0‬‬ ‫‪PX0‬‬

‫ﺍﮔﺮ ‪ PX0 = 1‬ﺑﺎﺷﺪ‪ ،‬ﺍﻳﻦ ﻭﻗﻔﻪ ﺩﺭ ﺳﻄﺢ ﺗﻘﺪﻡ ﺑﺎﻻﺗﺮ ﻗﺮﺍﺭ ﻣﻲﮔﻴﺮﺩ‪.‬‬
‫‪o‬‬

‫ﻛﺎﺭﺑﺮ ﻧﺮﻡﺍﻓﺰﺍﺭ ﻧﺒﺎﻳﺪ ﺑﻴﺖﻫﺎﻱ ﺗﻌﺮﻳﻒ ﻧﺸﺪﻩ ﺭﺍ ﻳﻚ ﻛﻨﺪ‪ ،‬ﺗﺎ ﻭﻗﺘﻲ ﻛﻪ ﺍﺯ ﺁﻥﻫﺎ ﺩﺭ‬
‫‪tr‬‬

‫ﻣﺤﺼﻮﻻﺕ ﺁﻳﻨﺪﺓ ‪ MCS – 51‬ﺍﺳﺘﻔﺎﺩﻩ ﺷﻮﺩ‪.‬‬


‫‪n‬‬

‫ﺍﮔﺮ ﻳﻜﻲ ﺍﺯ ﺷﺮﺍﻳﻂ ﺯﻳﺮ ﺑﺮﻗﺮﺍﺭ ﺑﺎﺷﺪ‪ .‬ﺳﺨﺖﺍﻓﺰﺍﺭ ﻋﻤﻠﻴﺎﺕ ﻓﺮﺍﺧﻮﺍﻧﻲ ﻭﻗﻔﻪ ﺭﺍ ﺍﻧﺠﺎﻡ ﻧﺨﻮﺍﻫﺪ ﺩﺍﺩ‪:‬‬
‫‪o‬‬
‫‪.C‬‬

‫‪ .١‬ﻭﻗﻔﻪﺍﻱ ﺑﺎ ﺣﻖﺗﻘﺪﻡ ﺑﺮﺍﺑﺮ ﻳﺎ ﺑﺎﻻﺗﺮ‪ ،‬ﺍﺯ ﻗﺒﻞ ﺩﺭ ﺣﺎﻝ ﺍﺟﺮﺍ ﺑﺎﺷﺪ‪ .‬ﺍﺟﺮﺍﻱ ﻭﻗﻔﺔ ﺑﺎ ﺣﻖﺗﻘﺪﻡ‬
‫‪w‬‬

‫ﭘﺎﺋﻴﻦﺗﺮ ﺗﻮﺳﻂ ﻭﻗﻔﺔ ﺑﺎ ﺣﻖﺗﻘﺪﻡ ﺑﺎﻻﺗﺮ ﻣﺘﻮﻗﻒ ﻣﻲﺷﻮﺩ؛ ﺍﻟﺒﺘﻪ ﺍﮔﺮ ﻭﻗﻔﺔ ﺑﺎ ﺣﻖﺗﻘﺪﻡ ﺑﺎﻻﺗﺮ‬
‫‪w‬‬

‫ﻓﻌﺎﻝ ﺷﺪﻩ ﺑﺎﺷﺪ‪.‬‬


‫‪w‬‬

‫‪ .٢‬ﺳﻴﻜﻞ ﻣﺎﺷﻴﻦ ﻓﻌﻠﻲ‪ ،‬ﺁﺧﺮﻳﻦ ﺳﻴﻜﻞ ﺩﺳﺘﻮﺭﺍﻟﻌﻤﻞ ﺩﺭ ﺣﺎﻝ ﺍﺟﺮﺍ ﻧﺒﺎﺷﺪ‪ .‬ﺍﺟﺮﺍﻱ‬

‫ﺩﺳﺘﻮﺭﺍﻟﻌﻤﻞ ﺑﺎﻳﺪ ﻗﺒﻞ ﺍﺯ ﭘﺮﺵ ﺑﻪ ﺩﺳﺘﻮﺭﺍﻟﻌﻤﻞﻫﺎﻱ ﺳﺮﻭﻳﺲﺩﻫﻲ ﻭﻗﻔﻪ ﺑﻪ ﺍﺗﻤﺎﻡ ﺑﺮﺳﺪ‪.‬‬

‫‪ .٣‬ﺩﺳﺘﻮﺭﺍﻟﻌﻤﻞ ﺩﺭ ﺣﺎﻝ ﺍﺟﺮﺍ‪ ،‬ﺩﺳﺘﻮﺭﺍﻟﻌﻤﻞ ‪ RETI‬ﻳﺎ ﻫﺮ ﺩﺳﺘﻮﺭﺍﻟﻌﻤﻠﻲ ﻛﻪ ﻋﻤﻞ ﻧﻮﺷﺘﻦ ﺩﺭ‬

‫ﺭﺟﻴﺴﺘﺮﻫﺎﻱ ‪ IE‬ﻳﺎ ‪ IP‬ﺭﺍ ﺍﻧﺠﺎﻡ ﻣﻲﺩﻫﺪ‪ ،‬ﺑﺎﺷﺪ‪ .‬ﺣﺪﺍﻗﻞ ﺑﺎﻳﺪ ﻳﻚ ﺩﺳﺘﻮﺭﺍﻟﻌﻤﻞ ﺍﺿﺎﻓﻲ ﺑﻌﺪ‬
‫ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش‬
‫اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ‬
‫ﻃﺮاﺣﯽ‪ ،‬ﺗﻮﻟﯿﺪ‪ ،‬اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ‬
‫آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ‬

‫ﺍﺯ ﺩﺳﺘﻮﺭﺍﻟﻌﻤﻞﻫﺎﻳﻲ ﻛﻪ ﭘﻴﺶ ﺍﺯ ﭘﺮﺵ ﺑﻪ ﺁﺩﺭﺱ ﺑﺮﺩﺍﺭ ﻭﻗﻔﻪ ﻗﺮﺍﺭ ﺩﺍﺷﺘﻨﺪ‪ ،‬ﺍﺟﺮﺍ ﺷﻮﺩ‪ .‬ﺩﻟﻴﻞ‬

‫ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﺍﻳﻦ ﺷﺮﻁ‪ ،‬ﺟﻠﻮﮔﻴﺮﻱ ﺍﺯ ﺭﺥ ﺩﺍﺩﻥ ﻳﻚ ﻭﻗﻔﻪ ﺩﺭ ﻣﻴﺎﻥ ﺍﺟﺮﺍﻱ ﻳﻚ ﺭﻭﺍﻝ ﺍﺳﺖ‬

‫‪r‬‬
‫‪.i‬‬
‫ﻛﻪ ﺑﻨﺎﻡ ﻓﺮﺁﻳﻨﺪ ﭘﻴﻜﺮﺑﻨﺪﻱ ﺩﻭﺑﺎﺭﺓ ﻭﻗﻔﻪﻫﺎ ﻧﻴﺰ ﻣﺸﻬﻮﺭ ﺍﺳﺖ‪ .‬ﻛﺎﺭﺑﺮﺩﻫﺎﻱ ﺭﺍﻩﺍﻧﺪﺍﺯﻱ ﺷﻮﻧﺪﻩ‬

‫‪s‬‬
‫ﺑﺎ ﻭﻗﻔﻪ ﺑﺪﻭﻥ ﺩﺭ ﻧﻈﺮ ﮔﺮﻓﺘﻦ ﺑﻲﻧﻈﻤﻲ ﺣﺎﺻﻞ ﺍﺯ ﺩﺳﺘﺮﺳﻲ ﻧﺪﺍﺷﺘﻦ ﺑﻪ ﺭﺟﻴﺴﺘﺮﻫﺎﻱ ﻛﻨﺘﺮﻝ‬

‫‪r‬‬
‫‪e‬‬
‫ﻭﻗﻔﻪ‪ ،‬ﻛﻪ ﻭﻇﻴﻔﺔ ﺗﻜﺮﺍﺭ ﻭﻗﻔﻪﻫﺎ ﺭﺍ ﺑﻪﻋﻬﺪﻩ ﺩﺍﺭﻧﺪ‪ ،‬ﻧﻴﺰ ﺑﻪ ﺍﻧﺪﺍﺯﺓ ﻛﺎﻓﻲ ﭘﻴﭽﻴﺪﻩ ﻫﺴﺘﻨﺪ‪.‬‬

‫‪k‬‬
‫‪a‬‬
‫ﻣﺪﺕ ﺯﻣﺎﻧﻲ ﺭﺍ ﻛﻪ ﺑﻴﻦ ﻓﻌﺎﻝ ﺷﺪﻥ ﻳﻚ ﻭﻗﻔﻪ ﻭ ﺷﺮﻭﻉ ﺍﺟﺮﺍﻱ ﺭﻭﺍﻝ ﺳﺮﻭﻳﺲﺩﻫﻲ ﻃﻮﻝ‬
‫‪lM‬‬
‫ﻣﻲﻛﺸﺪ‪ ،‬ﺯﻣﺎﻥ ﭘﺎﺳﺦ ﻣﻲﻧﺎﻣﻨﺪ‪ .‬ﺩﺭ ‪ 8051‬ﻛﻮﺗﺎﻫﺘﺮﻳﻦ ﺯﻣﺎﻥ ﭘﺎﺳﺦ ﺑﺮﺍﺑﺮ ‪ ٣‬ﺳﻴﻜﻞ ﻣﺎﺷﻴﻦ ﻭ ﻃﻮﻻﻧﻲﺗﺮﻳﻦ‬

‫)ﺑﺪﺗﺮﻳﻦ ﺣﺎﻟﺖ( ﺁﻥ ﺑﺮﺍﺑﺮ ‪ ٩‬ﺳﻴﻜﻞ ﻣﺎﺷﻴﻦ ﻣﻲﺑﺎﺷﺪ‪ .‬ﺩﺭ ﻛﺎﺭﺑﺮﺩﻫﺎﻱ ﺑﺎ ﻣﺤﺪﻭﺩﻳﺖ ﺯﻣﺎﻧﻲ‪ ،‬ﺑﺎﻳﺪ ﻓﺮﺽ ﺭﺍ‬
‫‪o‬‬
‫‪tr‬‬

‫ﺑﺮ ﺁﻥ ﺑﮕﺬﺍﺭﻳﻢ ﻛﻪ ﺑﺪﺗﺮﻳﻦ ﺣﺎﻟﺖ ﺍﺗﻔﺎﻕ ﺧﻮﺍﻫﺪ ﺍﻓﺘﺎﺩ‪.‬‬


‫‪n‬‬

‫ﺳﻄﻮﺡ ﺭﺍﻩﺍﻧﺪﺍﺯﻯ ﻭ ﭘﺎﮎ ﺷﺪﻥ ﭘﺮﭼﻢ‪:‬‬


‫‪o‬‬
‫‪.C‬‬

‫ﺩﺭ ﺣﺎﻟﺖ ﻛﻠﻲ‪ ،‬ﻭﻗﻔﻪﻫﺎ ﻣﻲﺗﻮﺍﻧﻨﺪ ﺣﺴﺎﺱ ﺑﻪ ﺳﻄﺢ ﻳﺎ ﺣﺴﺎﺱ ﺑﻪ ﺗﻐﻴﻴﺮ ﺣﺎﻟﺖ )ﺗﺮﻳﮕﺮ ﺷﻮﻧﺪﻩ ﺑﺎ‬

‫ﺳﻄﺢ ﻳﺎ ﺗﺮﻳﮕﺮ ﺷﻮﻧﺪﻩ ﺑﺎ ﻟﺒﻪ( ﺑﺎﺷﻨﺪ‪ .‬ﺭﻭﻳﺪﺍﺩ ﺣﺴﺎﺱ ﺑﻪ ﻟﺒﻪ ﺭﺍ ﮔﺬﺭﺍ ﻣﻲﻧﺎﻣﻨﺪ‪ ،‬ﺯﻳﺮﺍ ﻭﻗﺘﻲ ﺑﻴﺖ ﭘﺮﭼﻢ‬
‫‪w‬‬

‫ﻣﺮﺑﻮﻁ ﺑﻪ ﻭﻗﻔﺔ ﺁﻥ ﭘﺎﻙ ﻣﻲﺷﻮﺩ‪ ،‬ﺧﻮﺩ ﺭﻭﻳﺪﺍﺩ ﻭﻗﻔﻪ ﺩﻫﻨﺪﻩ ﻧﻴﺰ ﭘﺎﻙ ﻣﻲﮔﺮﺩﺩ )ﻣﺘﻮﻗﻒ ﻣﻲﺷﻮﺩ(‪.‬‬
‫‪w‬‬
‫‪w‬‬

‫ﺑﻪﻋﺒﺎﺭﺕ ﺩﻳﮕﺮ‪ .‬ﭘﺎﻙ ﻛﺮﺩﻥ ﺑﻴﺖ ﭘﺮﭼﻢ ﻭﻗﻔﺔ ﺣﺴﺎﺱ ﺑﻪ ﺳﻄﺢ ﺑﻪ ﺷﺮﻁ ﺍﻳﻨﻜﻪ ﺳﻄﺢ ﻣﻨﻄﻘﻲ ﺧﺎﺭﺟﻲ ﻛﻪ‬

‫ﻭﻗﻔﻪ ﺭﺍ ﺍﻳﺠﺎﺩ ﻛﺮﺩﻩ ﺍﺳﺖ ﻓﻌﺎﻝ ﺑﻤﺎﻧﺪ‪ ،‬ﻫﻴﭻ ﺗﺄﺛﻴﺮﻱ ﺑﺮ ﺭﻭﻧﺪ ﺍﺟﺮﺍﻱ ﻭﻗﻔﻪ ﻧﺨﻮﺍﻫﺪ ﮔﺬﺍﺷﺖ‪.‬‬

‫ﺩﺭ ‪ ،8051‬ﻣﻲﺗﻮﺍﻧﻴﻢ ﻭﻗﻔﻪﻫﺎﻱ ﺧﺎﺭﺟﻲ ‪ INT0‬ﻭ ‪ INT1‬ﺭﺍ ﺑﻪﻃﻮﺭ ﻣﺠﺰﺍ ﺑﻪ ﻳﻜﻲ ﺍﺯ ﺩﻭ ﺣﺎﻟﺖ‬

‫ﺣﺴﺎﺱ ﺑﻪ ﺳﻄﺢ ﻭ ﺣﺴﺎﺱ ﺑﻪ ﻟﺒﻪ ﭘﻴﻜﺮﺑﻨﺪﻱ ﻛﻨﻴﻢ‪ .‬ﺑﺪﻳﻦ ﻣﻨﻈﻮﺭ ﺍﺯ ﺑﻴﺖﻫﺎﻱ ‪ IT0‬ﻭ ‪ IT1‬ﺭﺟﻴﺴﺘﺮ‬
‫ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش‬
‫اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ‬
‫ﻃﺮاﺣﯽ‪ ،‬ﺗﻮﻟﯿﺪ‪ ،‬اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ‬
‫آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ‬

‫‪ TCON‬ﺍﺳﺘﻔﺎﺩﻩ ﻣﻲﻛﻨﻴﻢ‪ .‬ﻫﻨﮕﺎﻡ ﺭﺥ ﺩﺍﺩﻥ ﻭﻗﻔﻪ‪ ،‬ﺑﻴﺖ ﭘﺮﭼﻢ ﻳﻚ ﻣﻲﺷﻮﺩ ﻭ ﻭﻗﺘﻲ ﻓﺮﺍﺧﻮﺍﻧﻲ ﺍﺯ ﺑﺮﺩﺍﺭ‬

‫ﻭﻗﻔﻪ ﺻﻮﺭﺕ ﻣﻲ ﭘﺬﻳﺮﺩ‪ ،‬ﺑﻴﺖ ﭘﺮﭼﻢ ﺑﻪﻃﻮﺭ ﺧﻮﺩﻛﺎﺭ ﺻﻔﺮ ﻣﻲﺷﻮﺩ‪.‬‬

‫‪r‬‬
‫‪.i‬‬
‫ﺩﺭ ﻣﻮﺭﺩ ﺗﺎﻳﻤﺮﻫﺎ‪ ،‬ﭘﺮﭼﻢﻫﺎﻱ ‪ TF0‬ﻭ ‪ TF1‬ﻭﻗﺘﻲ ﻳﻚ ﻣﻲﺷﻮﻧﺪ ﻛﻪ ﻋﻤﻞ ﺷﻤﺎﺭﺵ ﺩﺭ ﺭﺟﻴﺴﺘﺮ‬

‫‪s‬‬
‫ﺷﻤﺎﺭﻧﺪﺓ ﻣﺮﺑﻮﻃﻪ ﻳﻚ ﺩﻭﺭ ﺑﺰﻧﺪ‪ ،‬ﻳﻌﻨﻲ ﻫﻤﺔ ﻳﻚﻫﺎ ﺑﻪ ﺻﻔﺮ ﺗﺒﺪﻳﻞ ﺷﻮﻧﺪ‪ ،‬ﻭﻗﻔﻪﻫﺎﻱ ﺷﻤﺎﺭﻧﺪﻩ ﺣﺴﺎﺱ‬

‫‪r‬‬
‫‪e‬‬
‫ﺑﻪ ﻟﺒﻪ ﻫﺴﺘﻨﺪ‪ .‬ﻫﻤﭽﻨﻴﻦ‪ TF0 ،‬ﻭ ‪ TF1‬ﺩﺭ ﻃﻮﻝ ﺳﺮﻭﻳﺲﺩﻫﻲ ﻭﻗﻔﻪ ﺑﻪﺻﻮﺭﺕ ﺧﻮﺩﻛﺎﺭ ﭘﺎﻙ ﻣﻲﺷﻮﻧﺪ‪.‬‬

‫‪k‬‬
‫ﻭﻗﻔﺔ ﺩﺭﮔﺎﻩ ﺳﺮﻳﺎﻝ ﺑﻪﻫﻨﮕﺎﻡ ﻳﻚ ﺷﺪﻥ ﺑﻴﺖ ‪ RI‬ﻳﺎ ‪ ،TI‬ﻓﻌﺎﻝ ﻣﻲﺷﻮﺩ‪ .‬ﺍﻟﺒﺘﻪ‪ RI ،‬ﻭ ‪ TI‬ﺑﻪﻃﻮﺭ‬

‫‪a‬‬
‫‪lM‬‬
‫ﺧﻮﺩﻛﺎﺭ ﭘﺎﻙ ﻧﻤﻲﺷﻮﻧﺪ‪ .‬ﺭﻭﺍﻝ ﺳﺮﻭﻳﺲﺩﻫﻲ ﻭﻗﻔﻪ‪ ،‬ﺧﻮﺩ ﺗﺸﺨﻴﺺ ﻣﻲﺩﻫﺪ ﻛﻪ ﻛﺪﺍﻡ ﺑﻴﺖ‪ ،‬ﻭﻗﻔﻪ ﺭﺍ‬

‫ﺍﻳﺠﺎﺩ ﻛﺮﺩﻩ ﺍﺳﺖ ﻭ ﺳﭙﺲ ﺑﻪﻋﻨﻮﺍﻥ ﺍﺟﺮﺍﻱ ﻗﺴﻤﺘﻲ ﺍﺯ ﺭﻭﺍﻝ‪ ،‬ﺁﻥ ﺑﻴﺖ ﺭﺍ ﭘﺎﻙ ﻣﻲﻛﻨﺪ‪.‬‬
‫‪o‬‬
‫‪tr‬‬
‫‪n‬‬
‫‪o‬‬
‫‪.C‬‬
‫‪w‬‬
‫‪w‬‬
‫‪w‬‬
‫ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش‬
‫اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ‬
‫ﻃﺮاﺣﯽ‪ ،‬ﺗﻮﻟﯿﺪ‪ ،‬اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ‬
‫آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ‬

‫ﺩﺭﮔﺎﻩ ﺳﺮﻳﺎﻝ ﻣﻴﮑﺮﻭﮐﻨﺘﺮﻟﺮ‪:‬‬

‫‪r‬‬
‫‪SMO SM1 SM2 REN‬‬ ‫‪TB8‬‬ ‫‪RB8‬‬ ‫‪TI‬‬ ‫‪RI‬‬

‫‪.i‬‬
‫‪s‬‬
‫‪SM0‬‬ ‫‪SM1‬‬

‫‪r‬‬
‫‪0‬‬ ‫‪0‬‬ ‫ﺣﺎﻟﺖ ﺻﻔﺮ‬

‫‪e‬‬
‫‪0‬‬ ‫‪1‬‬ ‫ﺣﺎﻟﺖ ﻳﻚ‬

‫‪k‬‬
‫‪1‬‬ ‫‪0‬‬ ‫ﺣﺎﻟﺖ ﺩﻭ‬
‫‪1‬‬ ‫‪1‬‬
‫‪a‬‬
‫ﺣﺎﻟﺖ ﺳﻪ‬
‫‪lM‬‬

‫‪:SM0,‬‬ ‫‪SM1‬‬
‫‪o‬‬

‫ﺟﻬﺖ ﻣﺸﺨﺺ ﻧﻤﻮﺩﻥ ﺣﺎﻟﺖ ﺩﺭﮔﺎﻩ ﺳﺮﻳﺎﻝ ﻃﺒﻖ ﺟﺪﻭﻝ ﺑﺎﻻ ﺑﻪ ﻛﺎﺭ ﻣﻲﺭﻭﺩ‪.‬‬
‫‪tr‬‬

‫ﺣﺎﻟﺖﻫﺎﻯ ﺩﺭﮔﺎﻩ ﺳﺮﻳﺎﻝ‪:‬‬


‫‪n‬‬

‫ﺣﺎﻟﺖ ﺻﻔﺮ‪:‬‬
‫‪o‬‬
‫‪.C‬‬

‫ﺣﺎﻟﺖ ﺻﻔﺮ ﺍﺯ ﻋﻤﻠﻴﺎﺕ ﻧﻴﻤﻪ ﺩﻭ ﻃﺮﻓﻪ ﻫﻤﺰﻣﺎﻥ ﺗﺸﻜﻴﻞ ﻳﺎﻓﺘﻪ ﺍﺳﺖ‪ .‬ﺩﺍﺩﻩﻫﺎ ﺍﺯ ﻃﺮﻳﻖ ﭘﺎﻳﺔ ‪RXD‬‬

‫ﻭ ﺩﺭ ﺩﺳﺘﻪﻫﺎﻱ ‪ ٨‬ﺑﻴﺘﻲ ﺍﺭﺳﺎﻝ ﻭ ﺩﺭﻳﺎﻓﺖ ﻣﻲﺷﻮﻧﺪ )ﺍﻟﺒﺘﻪ ﻧﻪ ﺑﻪﻃﻮﺭ ﻫﻤﺰﻣﺎﻥ(‪ .‬ﺑﻪﻃﻮﺭﻳﻜﻪ ﺍﺑﺘﺪﺍ ﻛﻢ‬
‫‪w‬‬

‫ﺍﺭﺯﺵﺗﺮﻳﻦ ﺑﻴﺖ ﺍﺭﺳﺎﻝ ﻳﺎ ﺩﺭﻳﺎﻓﺖ ﻣﻲﺷﻮﺩ‪ .‬ﻧﺮﺥ ﺍﺭﺳﺎﻝ ‪ /‬ﺩﺭﻳﺎﻓﺖ ﺩﺍﺩﻩ ﺑﺮﺍﺑﺮ ﺑﺎ ﻳﻚ ﺩﻭﺍﺯﺩﻫﻢ ﻓﺮﻛﺎﻧﺲ‬
‫‪w‬‬
‫‪w‬‬

‫ﺍﺳﻴﻼﺗﻮﺭ ﺍﺳﺖ‪ .‬ﺣﺪﺍﻛﺜﺮ ﺳﺮﻋﺖ ﺍﻧﺘﻘﺎﻝ ﻛﻪ ﻫﻢ ﻓﺮﻛﺎﻧﺲ ﺑﺎ ﻧﺮﺥ ﺍﺭﺳﺎﻝ ‪ /‬ﺩﺭﻳﺎﻓﺖ ﺩﺍﺩﻩ ﺍﺳﺖ‪ ،‬ﺩﺭ ﻃﻮﻝ‬

‫ﻫﺮ ﺩﻭ ﻋﻤﻴﺎﺕ ﺍﺭﺳﺎﻝ ﻭ ﺩﺭﻳﺎﻓﺖ ﺑﺮﺍﻱ ﻫﻤﺰﻣﺎﻥ ﻛﺮﺩﻥ ﮔﻴﺮﻧﺪﻩ ﻭ ﻓﺮﺳﺘﻨﺪﻩ ﺑﻜﺎﺭ ﻣﻲ ﺭﻭﺩ ﻭ ﺩﺭ ﭘﺎﻳﻪ ‪TXD‬‬

‫ﻗﺒﻞ ﺩﺳﺘﺮﺳﻲ ﻣﻲﺑﺎﺷﺪ‪ .‬ﻟﺒﻪ ﺳﺎﻋﺖ ﺍﻧﺘﻘﺎﻝ ﺩﺭ ﻃﻮﻝ ﺣﺎﻟﺖ ﻣﻌﺘﺒﺮ ﻫﺮ ﺑﻴﺖ ﺩﺍﺩﻩ ﺍﺗﻔﺎﻕ ﻣﻲﺍﻓﺘﺪ‪ .‬ﺗﻮﺟﻪ‬
‫ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش‬
‫اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ‬
‫ﻃﺮاﺣﯽ‪ ،‬ﺗﻮﻟﯿﺪ‪ ،‬اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ‬
‫آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ‬

‫ﺩﺍﺷﺘﻪ ﺑﺎﺷﻴﺪ ﻛﻪ ‪ TXD‬ﻭ ‪ RXD‬ﻛﺎﺭﺑﺮﺩﻫﺎﻱ ﺩﻭﻡ ﭘﺎﻳﻪﻫﺎﻱ ﺩﺭﮔﺎﻩ ‪ 3‬ﻫﺴﺘﻨﺪ‪ .‬ﺩﺭ ﺣﺎﻟﺖ ﺻﻔﺮ‪ ،‬ﻋﻤﻠﻴﺎﺕ‬

‫ﺩﺭﻳﺎﻓﺘﻲ ﻭﻗﺘﻲ ﺁﻏﺎﺯ ﻣﻲﺷﻮﺩ ﻛﻪ ﺑﻴﺖ ‪ REN‬ﻭ ‪ RI‬ﺩﺭ ﺭﺟﻴﺴﺘﺮ ‪ SCON‬ﺑﻪ ﺗﺮﺗﻴﺐ ‪ 1‬ﻭ ‪ 0‬ﺷﺪﻩ ﺑﺎﺷﻨﺪ‪.‬‬

‫‪r‬‬
‫‪.i‬‬
‫ﺣﺎﻟﺖ ﯾﮏ‪:‬‬

‫‪s‬‬
‫ﺣﺎﻟﺖ ﻳﻚ‪ ،‬ﺑﻪﺻﻮﺭﺕ ﻋﻤﻠﻴﺎﺕ ﻏﻴﺮ ﻫﻤﺰﻣﺎﻥ ﺩﻭ ﻃﺮﻓﻪ ﻛﺎﻣﻞ ﺍﺳﺖ‪ .‬ﺩﺍﺩﻩ ﺍﺯ ﻃﺮﻳﻖ ﭘﺎﻳﺔ ‪TXD‬‬

‫‪r‬‬
‫‪e‬‬
‫ﺍﺭﺳﺎﻝ ﻭ ﺍﺯ ﻃﺮﻳﻖ ﭘﺎﻳﺔ ‪ RXD‬ﺩﺭﻳﺎﻓﺖ ﻣﻲﺷﻮﺩ‪ .‬ﻗﺎﻟﺐ ﻛﺎﻣﻞ ﺩﺍﺩﻩ ﺩﺭ ﺍﺭﺳﺎﻝ‪ /‬ﺩﺭﻳﺎﻓﺖ ﺳﺮﻳﺎﻝ ﺷﺎﻣﻞ ﻳﻚ‬

‫‪k‬‬
‫‪a‬‬
‫ﺑﻴﺖ ﺷﺮﻭﻉ )ﻫﻤﻴﺸﻪ ﺻﻔﺮ ﺍﺳﺖ(‪ ،‬ﺑﻪﺩﻧﺒﺎﻝ ﺁﻥ ‪ ٨‬ﺑﻴﺖ ﺩﺍﺩﻩ )ﺍﺑﺘﺪﺍ ﻛﻢ ﺍﺭﺯﺵﺗﺮﻳﻦ ﺑﻴﺖ(‪ ،‬ﻭ ﺩﺭ ﺍﻧﺘﻬﺎ ﻳﻚ‬
‫‪lM‬‬
‫ﺑﻴﺖ ﺗﻮﻗﻒ )ﻫﻤﻴﺸﻪ ﺣﺪﺍﻗﻞ ﻳﻚ ﺍﺳﺖ‪ ،(.‬ﺍﺭﺳﺎﻝ ﻣﻲﺷﻮﺩ‪ .‬ﺑﻴﺖﻫﺎﻱ ﺷﺮﻭﻉ ﻭ ﺗﻮﻗﻒ ﺗﻮﺳﻂ ﺳﺨﺖﺍﻓﺰﺍﺭ‬

‫ﺑﻪ ‪ ٨‬ﺑﻴﺖ ﺩﺍﺩﻩ ﻛﻪ ﺍﺯ ﻃﺮﻳﻖ ﻧﺮﻡﺍﻓﺰﺍﺭ ﺑﻪ ﺭﺟﻴﺴﺘﺮ ‪ SBUF‬ﻧﻮﺷﺘﻪ ﺷﺪﻩ ﻳﺎ ﺍﺯ ﺁﻥ ﺧﻮﺍﻧﺪﻩ ﺷﺪﻩ ﺍﺳﺖ‪،‬‬
‫‪o‬‬
‫‪tr‬‬

‫ﺍﺿﺎﻓﻪ ﻣﻲﮔﺮﺩﻧﺪ‪ .‬ﻧﺮﺥ ﺍﺭﺳﺎﻝ ﺑﻴﺖ ﻣﺘﻐﻴﺮ ﺍﺳﺖ ﻭ ﻣﻲﺗﻮﺍﻥ ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﺗﺎﻳﻤﺮ ‪ 1‬ﺑﻪﻋﻨﻮﺍﻥ ﻣﻮﻟﺪ ﻧﺮﺥ‬
‫‪n‬‬

‫ﺍﺭﺳﺎﻝ ﺑﻴﺖ‪ ،‬ﺁﻥ ﺭﺍ ﺗﻌﻴﻴﻦ ﻛﺮﺩ‪.‬‬


‫‪o‬‬
‫‪.C‬‬

‫ﺣﺎﻟﺖ دو‪:‬‬
‫ﺣﺎﻟﺖ ﺩﻭ ﺷﺒﻴﻪ ﺣﺎﻟﺖ ﻳﻚ ﺍﺳﺖ‪ ،‬ﺑﻪ ﻏﻴﺮ ﺍﺯ ﺩﻭ ﺍﺳﺘﺜﻨﺎﺀ ﻛﻪ ﻭﺟﻮﺩ ﺩﺍﺭﺩ‪ .‬ﺍﻭﻻﹰ‪ ،‬ﻗﺎﻟﺐ ﺩﺍﺩﻩ ‪ ١١‬ﺑﻴﺘﻲ‬
‫‪w‬‬
‫‪w‬‬

‫ﺍﺳﺖ؛ ﻳﻚ ﺑﻴﺖ ﺩﺍﺩﻩ ﺑﻪﻋﻨﻮﺍﻥ ﻧﻬﻤﻴﻦ ﺑﻴﺖ ﺩﺍﺩﻩ‪ ،‬ﻗﺒﻞ ﺍﺯ ﺑﻴﺖ ﺗﻮﻗﻒ ﺍﺿﺎﻓﻪ ﺷﺪﻩ ﺍﺳﺖ‪ .‬ﻣﻮﻗﻊ ﺍﺭﺳﺎﻝ‪.‬‬

‫ﺑﻴﺖ ﻧﻬﻢ ﺭﺍ ﻣﻲﺗﻮﺍﻥ ﺍﺯ ﺑﻴﺖ ‪ TB8‬ﺭﺟﻴﺴﺘﺮ ‪ SCON‬ﺧﻮﺍﻧﺪ‪ .‬ﻓﺮﺽ ﺑﺮ ﺍﻳﻦ ﺍﺳﺖ ﻛﻪ ﻣﺤﺘﻮﻱ ‪ TB8‬ﻗﺒﻞ‬
‫‪w‬‬

‫ﺍﺯ ﺁﻏﺎﺯ ﻋﻤﻠﻴﺎﺕ ﺍﺭﺳﺎﻝ ﻧﻮﺷﺘﻪ ﺷﺪﻩ ﺍﺳﺖ‪ .‬ﺩﺭ ﻋﻤﻠﻴﺎﺕ ﺩﺭﻳﺎﻓﺖ‪ ،‬ﺑﻴﺖ ﻧﻬﻢ ﺭﺍ ﻣﻲﺗﻮﺍﻥ ﺍﺯ ﺑﻴﺖ ‪RB8‬‬

‫ﺭﺟﻴﺴﺘﺮ ‪ SCON‬ﺧﻮﺍﻧﺪ‪ .‬ﺍﺯ ﺑﻴﺖ ﻧﻬﻢ ﻣﻌﻤﻮ ﹰﻻ ﺑﻪﻋﻨﻮﺍﻥ ﺑﻴﺖ ﺗﻮﺍﺯﻥ ‪ ٨‬ﺑﻴﺖ ﺩﺍﺩﻩ ﺍﺳﺘﻔﺎﺩﻩ ﻣﻲﺷﻮﺩ‪ .‬ﺛﺎﻧﻴﹰﺎ‪.‬‬

‫ﻧﺮﺥ ﺍﺭﺳﺎﻝ ﺑﻴﺖ ﺑﺮﺍﺑﺮ ﻳﻚ ﺳﻲ ﻭ ﺩﻭﻡ ﻳﺎ ﻳﻚ ﺷﺼﺖ ﻭ ﭼﻬﺎﺭﻡ ﻓﺮﻛﺎﻧﺲ ﺍﺳﻴﻼﺗﻮﺭ ﻣﻲﺑﺎﺷﺪ‪ ،‬ﻛﻪ ﺍﻧﺘﺨﺎﺏ‬
‫ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش‬
‫اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ‬
‫ﻃﺮاﺣﯽ‪ ،‬ﺗﻮﻟﯿﺪ‪ ،‬اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ‬
‫آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ‬

‫ﻳﻜﻲ ﺍﺯ ﺍﻳﻦ ﺩﻭ ﻧﺮﺥ ﺍﺭﺳﺎﻝ ﺗﻮﺳﻂ ﺑﻴﺖ ‪) SMOD‬ﺑﻴﺖ ﻫﻔﺘﻢ( ﺭﺟﻴﺴﺘﺮ ‪ PCON‬ﺻﻮﺭﺕ ﻣﻲﮔﻴﺮﺩ‪ .‬ﺍﮔﺮ‬

‫‪ SMOD‬ﻳﻚ ﺷﻮﺩ‪ 1/32 ،‬ﻭ ﺍﮔﺮ ﺻﻔﺮ ﺷﻮﺩ‪ 1/64 ،‬ﻓﺮﻛﺎﻧﺲ ﺍﺳﻴﻼﺗﻮﺭ ﻣﻮﺭﺩ ﺍﺳﺘﻔﺎﺩﻩ ﻗﺮﺍﺭ ﻣﻲﮔﻴﺮﺩ‪.‬‬

‫‪r‬‬
‫‪.i‬‬
‫ﺣﺎﻟﺖ ﺳﻪ‪:‬‬

‫‪s‬‬
‫ﺣﺎﻟﺖ ﺳﻪ ﺷﺒﻴﻪ ﺣﺎﻟﺖ ﺩﻭ ﺍﺳﺖ‪ ،‬ﺑﻪ ﺍﺳﺘﺜﻨﺎﻱ ﺍﻳﻨﻜﻪ ﻧﺮﺥ ﺍﺭﺳﺎﻝ ﺑﻴﺖ ﺩﺭ ﺍﻳﻦ ﺣﺎﻟﺖ ﻣﺘﻐﻴﺮ ﺍﺳﺖ‬

‫‪r‬‬
‫ﻭ ﻃﺒﻖ ﺭﻭﺷﻲ ﻛﻪ ﺩﺭ ﺣﺎﻟﺖ ﻳﻚ ﮔﻔﺘﻪ ﺷﺪ‪،‬ﺗﻌﻴﻴﻦ ﻣﻲﺷﻮﺩ‪.‬ﻋﻤﻠﻴﺎﺕ ﺩﺭﻳﺎﻓﺖ ﺩﺭ ﺣﺎﻟﺖﻫﺎﻱ ‪ 2 ،1‬ﻭ ‪ 3‬ﺑﺎ‬

‫‪e‬‬
‫‪k‬‬
‫ﻳﻚ ﻛﺮﺩﻥ ﺑﻴﺖ‪ REN‬ﺭﺟﻴﺴﺘﺮ ‪ SCON‬ﻓﻌﺎﻝ ﻣﻲﺷﻮﺩ‪ .‬ﺩﺭﻳﺎﻓﺖ ﻭﺍﻗﻌﻲ ﻭﻗﺘﻲ ﺷﺮﻭﻉ ﻣﻲﺷﻮﺩ ﻛﻪ ﺑﻴﺖ‬

‫‪a‬‬
‫ﺷﺮﻭﻉ ﻭﺭﻭﺩﻱ‪ ،‬ﺳﺒﺐ ﺍﻳﺠﺎﺩ ﻳﻚ ﺗﻐﻴﻴﺮ ﺣﺎﻟﺖ ﻳﻚ ﺑﻪ ‪ 0‬ﺩﺭ ﭘﺎﻳﺔ ‪ RXD‬ﺷﻮﺩ‪ .‬ﻫﻤﺎﻥﻃﻮﺭ ﻛﻪ ﮔﻔﺘﻪ ﺷﺪ‪،‬‬
‫‪lM‬‬

‫ﺩﺭ ﻫﺮ ﺣﺎﻟﺖ ﻛﺎﺭﻱ ﻋﻤﻠﻴﺎﺕ ﺍﺭﺳﺎﻝ ﺑﺎ ﻧﻮﺷﺘﻦ ﺩﺭ ‪ SBUF‬ﺁﻏﺎﺯ ﻣﻲﮔﺮﺩﺩ‪.‬‬


‫‪o‬‬
‫‪tr‬‬

‫ﺗﻮﺟﻪ ﮐﻨﯿﺪ در ﺣﺎﻟﺖﻫﺎی ﯾﮏ و ﺳﻪ ﮐﻪ ﻧﺮخ ارﺳﺎل و درﯾﺎﻓﺖ ﺗﻮﺳﻂ ‪ TIMER‬ﻣﺸﺨﺺ ﻣﯽﺷﻮﻧﺪ‬


‫‪n‬‬

‫ﺑﻬﺘﺮ اﺳﺖ ‪ TIMER1‬در ﺣﺎﻟﺖ دو اﻧﺘﺨﺎب ﺷﻮد )‪ (8 bit auto reload‬در اﯾﻦ دو ﺣﺎﻟﺖ ﻧﺮخ‬
‫‪o‬‬

‫ارﺳﺎل و درﯾﺎﻓﺖ از ﺷﮑﻞ زﯾﺮ ﭘﯿﺮوی ﻣﯽﮐﻨﺪ‪.‬‬


‫‪.C‬‬
‫‪w‬‬

‫ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﻛﺮﻳﺴﺘﺎﻝ )ﻧﻮﺳﺎﻥﺳﺎﺯ( ‪ 11.0592MHz‬ﺑﻪ ﺍﻳﻦ ﻋﻠﺖ ﺍﺳﺖ ﺗﺎ ﻋﺪﺩ ﺧﺮﻭﺟﻲ ﻳﻚ ﻋﺪﺩ‬
‫‪w‬‬

‫ﺻﺤﻴﺢ ﻭ ﺑﺪﻭﻥ ﺍﻋﺸﺎﺭ ‪ ٢٨٨٠٠‬ﺑﺎﺷﺪ ﺳﭙﺲ ﻣﻲﺗﻮﺍﻧﻴﻢ ﺑﺎ ﺑﺎﺭﮔﺬﺍﺭﻱ ‪ TIMER1‬ﻧﺮﺥ ﺍﺭﺳﺎﻝ ﺭﺍ ﻃﺒﻖ‬
‫‪w‬‬

‫ﺟﺪﻭﻝ ﺯﻳﺮ ﺗﻐﻴﻴﺮ ﺩﻫﻴﻢ‪.‬‬

‫‪x‬‬ ‫‪Baud Rate‬‬


‫‪-2‬‬ ‫‪14400‬‬
‫‪-3‬‬ ‫‪9600‬‬
‫‪-6‬‬ ‫‪4800‬‬
‫ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش‬
‫اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ‬
‫ﻃﺮاﺣﯽ‪ ،‬ﺗﻮﻟﯿﺪ‪ ،‬اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ‬
‫آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ‬

‫‪-12‬‬ ‫‪2400‬‬
‫‪-24‬‬ ‫‪1200‬‬
‫‪-48‬‬ ‫‪600‬‬

‫‪r‬‬
‫‪:SM2‬‬

‫‪.i‬‬
‫ﺑﻴﺸﺘﺮ ﺩﺭ ﺍﺭﺗﺒﺎﻁ ﭼﻨﺪ ﺭﻳﺰﭘﺮﺩﺍﺯﻧﺪﻩ ﻣﻮﺭﺩ ﺍﺳﺘﻔﺎﺩﻩ ﻗﺮﺍﺭ ﻣﻲﮔﻴﺮﺩ‪ .‬ﭼﻨﺎﻧﭽﻪ ‪ SM2‬ﺍﻧﺘﺨﺎﺏ ﺷﺪﻩ‬

‫‪s‬‬
‫‪r‬‬
‫ﺑﺎﺷﺪ ﺷﺮﻁ ﻭﺍﺭﺩﺷﺪﻥ ﻭﻗﻔﻪ ﺳﺮﻳﺎﻝ ﺩﺭﻳﺎﻓﺖ ﺑﻴﺖ ﻧﻬﻢ ﺍﺳﺖ‪ .‬ﺍﻳﻦ ﺑﻴﺖ ﺩﺭ ﺣﺎﻟﺖ ﻋﺎﺩﻱ ﺻﻔﺮ ﺍﺳﺖ‪.‬‬

‫‪e‬‬
‫‪k‬‬
‫‪ REN‬ﺍﮔﺮ ﺍﻳﻦ ﺑﻴﺖ ﻳﻚ ﺷﺪﻩ ﺑﺎﺷﺪ ﭘﺎﻳﻪ ‪ RXD‬ﺭﻭﻱ ‪ 8051‬ﻓﻌﺎﻝ ﻣﻲﺷﻮﺩ‪.‬‬

‫‪a‬‬
‫‪lM‬‬
‫‪:RB8‬‬
‫ﺑﻴﺖ ﻧﻬﻢ ﺍﺭﺳﺎﻝ ﺍﺳﺖ ﺍﮔﺮ ﻳﻚ ﺑﺎﺷﺪ ﺑﻴﺖ ﻧﻬﻢ ﻳﻚ ﺍﺭﺳﺎﻝ ﺷﺪﻩ ﻭ ﺍﮔﺮ ﺻﻔﺮ ﺑﺎﺷﺪ ﺑﻴﺖ ﻧﻬﻢ ﺻﻔﺮ‬
‫‪o‬‬
‫‪tr‬‬

‫ﺍﺭﺳﺎﻝ ﻣﻲﺷﻮﺩ ﺩﺭ ﺣﺎﻟﺖ ﻋﺎﺩﻱ ﺍﻳﻦ ﺑﻴﺖ ﺻﻔﺮ ﺍﺳﺖ‪.‬‬


‫‪n‬‬

‫‪:TB8‬‬
‫‪o‬‬

‫ﺑﻴﺖ ﺩﺭﻳﺎﻓﺖ ﺷﺪﻩ ﻧﻬﻢ ﺩﺭ ﺍﻳﻦ ﺣﺎﻓﻈﻪ ﻗﺮﺍﺭ ﻣﻲﮔﻴﺮﺩ ﻭ ﺩﺭ ﺣﺎﻟﺖ ﻋﺎﺩﻱ ﺻﻔﺮ ﺍﺳﺖ‪ .‬ﺷﺎﻳﺪ ﺍﺯ‬
‫‪.C‬‬

‫ﺧﻮﺩ ﺳﻮﺍﻝ ﻛﻨﻴﺪ ﻛﻪ ﭼﺮﺍ ﺍﻳﻦ ﺩﻭ ﺑﻴﺖ ﻭﺟﻮﺩ ﺩﺍﺭﻧﺪ ﺑﺪﻳﻦ ﺩﻟﻴﻞ ﻛﻪ ‪ SBUFER‬ﻫﺸﺖ ﺑﻴﺘﻲ ﺍﺳﺖ ﻭ‬
‫‪w‬‬

‫ﻧﻤﻲﺗﻮﺍﻧﺪ ‪ P‬ﻳﺎ ﺑﻴﺖ ﻧﻬﻢ ﺭﺍ ﻫﻢ ﺩﺭ ﺧﻮﺩ ﺟﺎﻱ ﺩﻫﺪ ﺑﻪ ﻫﻤﻴﻦ ﺩﻟﻴﻞ ﺍﻳﻦ ﺩﻭ ﺑﻴﺖ ﺭﺍ ﺟﻬﺖ ﺩﺭﻳﺎﻓﺖ ﻳﺎ‬
‫‪w‬‬

‫ﺍﺭﺳﺎﻝ ﺑﻴﺖ ﻧﻬﻢ ﻗﺮﺍﺭ ﺩﺍﺩﻧﺪ‪.‬‬


‫‪w‬‬

‫ﺟﻬﺖ ﺍﺭﺳﺎﻝ ﺍﻃﻼﻋﺎﺕ ﺑﻪ ﺩﺭﮔﺎﻩ ﺳﺮﻳﺎﻝ ‪ RS232‬ﺑﻪ ﻃﻮﺭ ﻣﺜﺎﻝ ﺩﺭﮔﺎﻩ ﺳﺮﻳﺎﻝ ﻛﺎﻣﭙﻴﻮﺗﺮ ﺑﺎﻳﺪ ﺑﻪ‬

‫ﻧﻜﺎﺕ ﺯﻳﺮ ﺗﻮﺟﻪ ﻛﻨﻴﺪ‪.‬‬


‫ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش‬
‫اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ‬
‫ﻃﺮاﺣﯽ‪ ،‬ﺗﻮﻟﯿﺪ‪ ،‬اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ‬
‫آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ‬

‫‪ -١‬ﺍﺯ ﺁﻧﺠﺎﻳﻴﻜﻪ ﺩﺭ ﻣﻴﻜﺮﻭﻛﻨﺘﺮﻟﺮ ﺳﻄﺢ ﻣﻨﻄﻘﻲ ﻳﻚ ‪ +5‬ﻭ ﺻﻔﺮ ‪ GND‬ﺍﺳﺖ ﻭ ﺩﺭ ﺍﺳﺘﺎﻧﺪﺍﺭﺩ‬

‫‪ -15 ، RS232‬ﺗﺎ ‪ -3‬ﺳﻄﺢ ﻳﻚ ﻭ ‪ +15‬ﺗﺎ ‪ +3‬ﺳﻄﺢ ﻣﻨﻄﻘﻲ ﺻﻔﺮ ﺍﺳﺖ‪ .‬ﺑﺎﻳﺪ ﺍﻳﻦ ﺗﺒﺪﻳﻞ ﺍﺯ‬

‫‪r‬‬
‫‪.i‬‬
‫ﺳﻄﺢ ‪ TTL‬ﺑﻪ ‪ RS232‬ﺻﻮﺭﺕ ﺑﮕﻴﺮﺩ ﺍﻳﻦ ﺗﺒﺪﻳﻞ ﻣﻲﺗﻮﺍﻧﺪ ﺗﻮﺳﻂ ﺁﻱﺳﻲ ‪ Max232‬ﺑﻪ‬

‫‪s‬‬
‫ﺻﻮﺭﺕ ﺷﻜﻞ ﺯﻳﺮ ﺻﻮﺭﺕ ﺑﮕﻴﺮﺩ‪.‬‬

‫‪r‬‬
‫‪e‬‬
‫‪k‬‬
‫‪a‬‬
‫‪lM‬‬
‫‪o‬‬
‫‪tr‬‬
‫‪n‬‬
‫‪o‬‬
‫‪.C‬‬
‫‪w‬‬
‫‪w‬‬

‫‪ -٢‬ﺩﻭﻣﻴﻦ ﻧﻜﺘﻪ ﺗﻬﻴﻪ ﻳﻚ ﻛﺎﺑﻞ ﺭﺍﺑﻂ ﺍﺯ ﻛﺎﻣﭙﻴﻮﺗﺮ ﺑﻪ ‪ 89C51‬ﻣﻲﺑﺎﺷﺪ ﻛﻪ ﺷﻤﺎ ﻣﻲﺗﻮﺍﻧﻴﺪ ﻣﺎﻧﻨﺪ‬
‫‪w‬‬

‫ﺷﻜﻞ ﺯﻳﺮ ﻋﻤﻞ ﻧﻤﺎﻳﻴﺪ‪.‬‬


‫ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش‬
‫اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ‬
‫ﻃﺮاﺣﯽ‪ ،‬ﺗﻮﻟﯿﺪ‪ ،‬اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ‬
‫آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ‬

‫‪r‬‬
‫ﺩﺭ ﺍﺭﺳﺎﻝ ﺩﺍﺩﻩ ﺍﺯ ﻃﺮﻳﻖ ﺳﺮﻳﺎﻝ ﺑﺎﻳﺪ ﻣﺮﺍﺣﻞ ﺯﻳﺮ ﺭﺍ ﻃﻲ ﻛﺮﺩ‪:‬‬

‫‪.i‬‬
‫‪ -١‬ﺑﺎﺭﮔﺬﺍﺭﻱ ‪ SCON‬ﺟﻬﺖ ﺍﻧﺘﺨﺎﺏ ﺣﺎﻟﺖ ﺍﺭﺳﺎﻝ‬

‫‪s‬‬
‫‪r‬‬
‫‪ -٢‬ﺑﺎﺭﮔﺬﺍﺭﻱ ‪ TMOD‬ﺑﺮﺍﻱ ﺣﺎﻟﺖ ‪١‬ﻭ‪٣‬‬

‫‪e‬‬
‫‪k‬‬
‫‪ -٣‬ﺑﺎﺭﮔﺬﺍﺭﻱ ‪ TIMER1‬ﺑﺮﺍﻱ ﺣﺎﻟﺖ ‪ ١‬ﻭ‪٣‬‬

‫‪a‬‬
‫‪ -٤‬ﺍﻧﺘﻘﺎﻝ ﺩﺍﺩﻩ ﺩﺭ ‪SBUF‬‬
‫‪lM‬‬
‫‪ -٥‬ﺳﺮﻛﺸﻲ ﭘﺮﭼﻢ ﺍﺭﺳﺎﻝ ﺩﺭ ﺍﻳﻦ ﻗﺴﻤﺖ ‪ TI‬ﺭﺍ ﺳﺮﻛﺸﻲ ﻛﺮﺩﻩ ﺗﺎ ﺍﺭﺳﺎﻝ ﺗﻤﺎﻡ ﺷﻮﺩ ﺑﻌﺪ ﺍﺯ ﺍﺗﻤﺎﻡ‬
‫‪o‬‬

‫ﻛﺎﻣﻞ ﺍﺭﺳﺎﻝ ‪ TI‬ﺑﻪ ﺻﻮﺭﺕ ﺳﺨﺖﺍﻓﺰﺍﺭﻱ ﻳﻚ ﻣﻲﺷﻮﺩ‪.‬‬


‫‪tr‬‬

‫‪ -٦‬ﭘﺎﻙ ﻛﺮﺩﻥ ﭘﺮﭼﻢ ‪TI‬‬


‫‪n‬‬

‫ﻧﻤﻮﻧﻪ ﺑﺮﻧﺎﻣﻪ )‪:(١٩‬‬


‫‪o‬‬
‫‪.C‬‬

‫ﺑﺮﻧﺎﻣﻪﺍﻱ ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﻣﻘﺎﺩﻳﺮ ﺭﻭﻱ ﭘﻮﺭﺕ ﺩﻭ ﺭﺍ ﺑﺮ ﺭﻭﻱ ﺩﺭﮔﺎﻩ ﺳﺮﻳﺎﻝ ﺑﺎ ﻧﺮﺥ ‪ 9600bps‬ﺍﺭﺳﺎﻝ‬
‫‪w‬‬

‫ﻛﻨﺪ‪.‬‬
‫‪w‬‬

‫‪MAIN:‬‬
‫‪MOV SCON,#01010000B‬‬
‫‪MOV TMOD,#20H‬‬
‫‪w‬‬

‫‪MOV TH1,# -3‬‬


‫‪SETB TR1‬‬
‫‪NEXT:‬‬
‫‪MOV A,P2‬‬
‫‪MOV SBUF,A‬‬
‫‪LOOP:JNB TI,LOOP‬‬
‫‪CLR TI‬‬
‫‪JMP NEXT‬‬
‫‪END‬‬
‫ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش‬
‫اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ‬
‫ﻃﺮاﺣﯽ‪ ،‬ﺗﻮﻟﯿﺪ‪ ،‬اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ‬
‫آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ‬

‫ﺩﺭ ﺩﺭﻳﺎﻓﺖ ﺩﺍﺩﻩ ﺍﺯ ﻃﺮﻳﻖ ﺳﺮﻳﺎﻝ ﺑﺎﻳﺪ ﻣﺮﺍﺣﻞ ﺯﻳﺮ ﺭﺍ ﻃﻲ ﻛﺮﺩ‪:‬‬

‫‪ -١‬ﺑﺎﺭﮔﺬﺍﺭﻱ ‪ SCON‬ﺟﻬﺖ ﺍﻧﺘﺨﺎﺏ ﺣﺎﻟﺖ ﺩﺭﻳﺎﻓﺖ‬

‫‪r‬‬
‫‪.i‬‬
‫‪ -٢‬ﺑﺎﺭﮔﺬﺍﺭﻱ ‪ TMOD‬ﺑﺮﺍﻱ ﺣﺎﻟﺖ ‪١‬ﻭ‪٣‬‬

‫‪s‬‬
‫‪ -٣‬ﺑﺎﺭﮔﺬﺍﺭﻱ ‪ TIMER1‬ﺑﺮﺍﻱ ﺣﺎﻟﺖ ‪ ١‬ﻭ‪٣‬‬

‫‪r‬‬
‫‪e‬‬
‫‪ -٤‬ﺍﻧﺘﻘﺎﻝ ﺩﺍﺩﻩ ﺩﺭ ‪SBUF‬‬

‫‪k‬‬
‫‪ -٥‬ﺳﺮﻛﺸﻲ ﭘﺮﭼﻢ ﺍﺭﺳﺎﻝ ﺩﺭ ﺍﻳﻦ ﻗﺴﻤﺖ ‪ RI‬ﺭﺍ ﺳﺮﻛﺸﻲ ﻛﺮﺩﻩ ﺗﺎ ﺍﺭﺳﺎﻝ ﺗﻤﺎﻡ ﺷﻮﺩ ﺑﻌﺪ ﺍﺯ ﺍﺗﻤﺎﻡ‬

‫‪a‬‬
‫‪lM‬‬
‫ﻛﺎﻣﻞ ﺍﺭﺳﺎﻝ ‪ RI‬ﺑﻪ ﺻﻮﺭﺕ ﺳﺨﺖﺍﻓﺰﺍﺭﻱ ﻳﻚ ﻣﻲﺷﻮﺩ‪.‬‬

‫‪ -٦‬ﭘﺎﻙ ﻛﺮﺩﻥ ﭘﺮﭼﻢ ‪RI‬‬


‫‪o‬‬
‫‪tr‬‬

‫‪ -٧‬ﺍﻧﺘﻘﺎﻝ ﺩﺍﺩﻩ ﺩﺭﻳﺎﻓﺘﻲ ﺍﺯ ‪SBUF‬‬


‫‪n‬‬

‫ﻧﻤﻮﻧﻪ ﺑﺮﻧﺎﻣﻪ )‪:(٢٠‬‬


‫‪o‬‬

‫ﺑﺮﻧﺎﻣﻪﺍﻱ ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﺍﻃﻼﻋﺎﺗﻲ ﺭﺍ ﺍﺯ ﺩﺭﮔﺎﻩ ﺳﺮﻳﺎﻝ ﺑﺎ ﻧﺮﺥ ‪ 9600bps‬ﺩﺭﻳﺎﻓﺖ ﻛﻨﺪ‪.‬‬


‫‪.C‬‬

‫‪MAIN:‬‬
‫‪w‬‬

‫‪MOV SCON,#01010000B‬‬
‫‪MOV TMOD,#20H‬‬
‫‪MOV TH1,#-3 ;IF XTALL CHANG TO 11.0592 SET BAUD RATE‬‬ ‫‪-3=9600|-6=4800|-‬‬
‫‪w‬‬

‫‪12=2400|-24=1200 ......‬‬
‫‪SETB TR1‬‬
‫‪w‬‬

‫‪RESEVER:‬‬
‫‪LOOP:JNB RI,LOOP‬‬
‫‪MOV A,SBUF‬‬
‫‪CLR RI‬‬
‫‪MOV P1,A‬‬
‫‪JMP RESEVER‬‬
‫‪END‬‬
‫ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش‬
‫اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ‬
‫ﻃﺮاﺣﯽ‪ ،‬ﺗﻮﻟﯿﺪ‪ ،‬اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ‬
‫آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ‬

‫‪r‬‬
‫‪.i‬‬
‫‪LCD‬‬

‫‪s‬‬
‫‪r‬‬
‫ﺗﻤﺎﻳﻞ ﺑﻪ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﻧﻤﺎﻳﺸﮕﺮ ﻛﺮﻳﺴﺘﺎﻝ ﻣﺎﻳﻊ )‪ (LCD‬ﺑﻪ ﻋﻨﻮﺍﻥ ﺻﻔﺤﻪ ﻧﻤﺎﻳﺶ ﺩﺭ ﭘﺮﻭﮊﻩﻫﺎﻱ‬

‫‪e‬‬
‫ﻣﺨﺘﻠﻒ ﺭﻭﺯ ﺑﻪ ﺭﻭﺯ ﺍﻓﺰﺍﻳﺶ ﻣﻲﻳﺎﺑﺪ‪ .‬ﺩﺭ ﺟﺎﻳﻲ ﻛﻪ ‪ 7SEGMENT‬ﻧﻤﻲﺗﻮﺍﻧﺪ ﻛﺎﺭﺍﻛﺘﺮﻫﺎ ﺭﺍ ﻧﻤﺎﻳﺶ ﺩﻫﺪ‬

‫‪k‬‬
‫ﻭ ﻳﺎ ﺍﻳﻨﻜﻪ ﻓﻀﺎﻱ ﺍﺿﺎﻓﻲ ﺑﺮﺍﻱ ﻧﻤﺎﻳﺶ ﺗﻌﺪﺍﺩ ﺭﻗﻢﻫﺎ ﻣﻲﮔﻴﺮﺩ ﺍﺯ‪ LCD‬ﺍﺳﺘﻔﺎﺩﻩ ﻣﻲﻛﻨﻨﺪ‪.‬‬

‫‪a‬‬
‫‪lM‬‬
‫ﺗﻮﺻﻴﻒ ﭘﺎﻳﻪﻫﺎﻯ ‪:LCD‬‬
‫‪o‬‬

‫ﺗﻮﺻﻴﻒ‬ ‫‪I/O‬‬ ‫ﻧﻤﺎﺩ‬ ‫ﭘﺎﻳﻪ‬


‫‪tr‬‬

‫ﺯﻣﻴﻦ‬ ‫‪----‬‬ ‫‪VSS‬‬ ‫‪1‬‬


‫‪----‬‬ ‫‪VCC‬‬ ‫‪2‬‬
‫‪n‬‬

‫ﻣﻨﺒﻊ ﺗﻐﺬﻳﻪ‬
‫‪----‬‬ ‫‪VEE‬‬ ‫‪3‬‬
‫‪o‬‬

‫ﻣﻨﺒﻊ ﺗﻐﺬﻳﻪ ﻛﻨﺘﺮﻝ ﺩﺭﺧﺸﻨﺪﮔﻲ‬


‫‪I‬‬ ‫‪RS‬‬ ‫‪4‬‬
‫‪.C‬‬

‫ﺍﻧﺘﺨﺎﺏ ﺛﺒﺎﺕ ﺩﺍﺩﻩ ﻳﺎ ﺩﺳﺘﻮﺭﺍﻟﻌﻤﻞ‬


‫ﮔﺬﺭ ﮔﺎﻩ ﺩﺍﺩﻩ‬ ‫‪I‬‬ ‫‪R/W‬‬ ‫‪5‬‬
‫‪w‬‬

‫ﮔﺬﺭ ﮔﺎﻩ ﺩﺍﺩﻩ‬ ‫‪I‬‬ ‫‪E‬‬ ‫‪6‬‬


‫‪I/O‬‬ ‫‪DB0‬‬ ‫‪7‬‬
‫‪w‬‬

‫ﮔﺬﺭ ﮔﺎﻩ ﺩﺍﺩﻩ‬


‫ﮔﺬﺭ ﮔﺎﻩ ﺩﺍﺩﻩ‬ ‫‪I/O‬‬ ‫‪DB1‬‬ ‫‪8‬‬
‫‪w‬‬

‫ﮔﺬﺭ ﮔﺎﻩ ﺩﺍﺩﻩ‬ ‫‪I/O‬‬ ‫‪DB2‬‬ ‫‪9‬‬


‫ﮔﺬﺭ ﮔﺎﻩ ﺩﺍﺩﻩ‬ ‫‪I/O‬‬ ‫‪DB3‬‬ ‫‪10‬‬
‫ﮔﺬﺭ ﮔﺎﻩ ﺩﺍﺩﻩ‬ ‫‪I/O‬‬ ‫‪DB4‬‬ ‫‪11‬‬
‫ﮔﺬﺭ ﮔﺎﻩ ﺩﺍﺩﻩ‬ ‫‪I/O‬‬ ‫‪DB5‬‬ ‫‪12‬‬
‫ﮔﺬﺭ ﮔﺎﻩ ﺩﺍﺩﻩ‬ ‫‪I/O‬‬ ‫‪DB6‬‬ ‫‪13‬‬
‫ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش‬
‫اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ‬
‫ﻃﺮاﺣﯽ‪ ،‬ﺗﻮﻟﯿﺪ‪ ،‬اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ‬
‫آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ‬

‫ﮔﺬﺭ ﮔﺎﻩ ﺩﺍﺩﻩ‬ ‫‪I/O‬‬ ‫‪DB7‬‬ ‫‪14‬‬


‫ﺯﻣﻴﻦ‬ ‫‪----‬‬ ‫‪VSS‬‬ ‫‪15‬‬
‫ﺑﺎ ﻳﻚ ﻣﻘﺎﻭﻣﺖ ‪10 OHM‬ﺑﻪ‪VCC‬‬ ‫‪----‬‬ ‫‪VCC‬‬ ‫‪16‬‬

‫‪r‬‬
‫‪.i‬‬
‫‪s‬‬
‫‪r‬‬
‫‪e‬‬
‫‪k‬‬
‫‪a‬‬
‫‪lM‬‬
‫‪o‬‬
‫‪tr‬‬
‫‪n‬‬
‫‪o‬‬
‫‪.C‬‬
‫‪w‬‬
‫‪w‬‬
‫‪w‬‬
‫ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش‬
‫اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ‬
‫ﻃﺮاﺣﯽ‪ ،‬ﺗﻮﻟﯿﺪ‪ ،‬اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ‬
‫آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ‬

‫ﭘﺎﻳﻪ ‪:RS‬‬
‫ﺩﺭ ﺩﺍﺧﻞ ‪ LCD‬ﺩﻭ ﺛﺒﺎﺕ ﻭﺟﻮﺩ ﺩﺍﺭﺩ ﻭ ﺍﻳﻦ ﭘﺎﻳﻪ ﺑﺮﺍﻱ ﺍﻧﺘﺨﺎﺏ ﺍﻳﻦ ﺩﻭ ﺛﺒﺎﺕ ﺑﻪ ﺗﺮﺗﻴﺐ ﺯﻳﺮ ﻋﻤﻞ‬

‫‪r‬‬
‫ﻣﻲﻛﻨﺪ‪.‬‬

‫‪.i‬‬
‫‪s‬‬
‫ﺍﻟﻒ‪ :‬ﺍﮔﺮ ‪ RS=0‬ﺑﺎﺷﺪ ﺛﺒﺎﺕ ﺩﺳﺘﻮﺭﺍﻟﻌﻤﻞ ﻓﺮﻣﺎﻥ ﺍﻧﺘﺨﺎﺏ ﻣﻲﺷﻮﺩ ﻭﺑﺎﻋﺚ ﻣﻲﺷﻮﺩ ﻓﺮﻣﺎﻥﻫﺎﻳﻲ ﻛﻪ ﺩﺭ‬

‫‪r‬‬
‫‪e‬‬
‫ﺟﺪﻭﻝ ﺯﻳﺮ ﺁﻭﺭﺩﻩ ﺷﺪﻩ ﺻﺎﺩﺭ ﮔﺮﺩﺩ‪.‬‬

‫‪k‬‬
‫ﺏ‪ :‬ﺍﮔﺮ ‪ RS=1‬ﺑﺎﺷﺪ ﺛﺒﺎﺕ ﺩﺍﺩﻩ ﺍﻧﺘﺨﺎﺏ ﻣﻲﮔﺮﺩﺩ ﻭ ﺑﻪ ﻣﺎ ﺍﺟﺎﺯﻩ ﻧﻮﺷﺘﻦ ﺭﻭﻱ ‪ LCD‬ﺭﺍ ﻣﻲﺩﻫﺪ‪.‬‬

‫‪a‬‬
‫‪lM‬‬
‫ﭘﺎﻳﻪ ‪:R/W‬‬
‫ﺍﻳﻦ ﭘﺎﻳﻪ ﺑﻪ ﻛﺎﺭﺑﺮﺍﺟﺎﺯﻩ ﻧﻮﺷﺘﻦ ﺍﻃﻼﻋﺎﺕ ﺩﺭ ‪ LCD‬ﻭﻳﺎ ﺧﻮﺍﻧﺪﻥ ﺍﺯ ﺁﻥ ﺭﺍ ﻓﺮﺍﻫﻢ ﻣﻲﻛﻨﺪ‪ .‬ﺑﺮﺍﻱ‬
‫‪o‬‬

‫ﻧﻮﺷﺘﻦ ‪ R/W=1‬ﺍﺳﺖ‪.‬‬
‫‪tr‬‬
‫‪n‬‬

‫ﭘﺎﻳﻪ ‪:E‬‬
‫‪o‬‬

‫‪ LCD‬ﺍﺯ ﺍﻳﻦ ﭘﺎﻳﻪ ﺑﺮﺍﻱ ﻟﭻ ﻛﺮﺩﻥ ﺍﻃﻼﻋﺎﺕ ﺍﺭﺍﻳﻪ ﺷﺪﻩ ﺑﻪ ﭘﺎﻳﻪﻫﺎﻱ ﺩﺍﺩﻩﺍﺵ ﺍﺳﺘﻔﺎﺩﻩ ﻣﻲﻛﻨﺪ‪ .‬ﻭﻗﺘﻲ‬
‫‪.C‬‬

‫ﺩﺍﺩﻩﻫﺎﻱ ﺍﻋﻤﺎﻝ ﺷﺪ‪ ،‬ﻳﻚ ﭘﺎﻟﺲ ﺑﺎﻻ ﺑﻪ ﭘﺎﻳﻴﻦ ﺑﻪ ﺍﻳﻦ ﭘﺎﻳﻪ ﺍﻋﻤﺎﻝ ﻣﻲﮔﺮﺩﺩ‪ .‬ﺗﺎ ﺑﻪ ﺍﻳﻦ ﻭﺳﻴﻠﻪ ‪LCD‬‬
‫‪w‬‬

‫ﺍﻃﻼﻋﺎﺕ ﻣﻮﺟﻮﺩ ﺩﺭ ﭘﺎﻳﻪﻫﺎﻱ ﺩﺍﺩﻩ ﺭﺍ ﻟﭻ ﻛﻨﺪ‪.‬‬


‫‪w‬‬
‫‪w‬‬

‫ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻰ ﺑﺮﺍﻯ ‪:LCD‬‬


‫ﺑﺮﺍﻱ ﻧﻮﺷﺘﻦ ﺑﺮﻧﺎﻣﻪﻫﺎ ﺑﺮ ﺭﻭﻱ ‪ LCD‬ﺑﻪ ﻧﻜﺎﺕ ﺯﻳﺮ ﺗﻮﺟﻪ ﺷﻮﺩ‪.‬‬

‫‪ LCD(١‬ﺑﺮﺍﻱ ﻋﻤﻠﻴﺎﺕ ﺩﺭﻭﻧﻲ ﺧﻮﺩ ﺑﺮﺍﻱ ﺛﺒﺎﺕ ﺩﺳﺘﻮﺭﺍﻟﻌﻤﻞ ﻭﺩﺍﺩﻩ ﺑﻪ ﻣﺪﺕ ﻣﻌﻴﻨﻲ ﺯﻣﺎﻥ ﻧﻴﺎﺯ ﺩﺍﺭﺩ‪ ،‬ﺩﺭ‬

‫ﺻﻮﺭﺗﻲ ﻛﻪ ﻣﺎ ﺍﻃﻼﻋﺎﺕ ﺟﺪﻳﺪﻱ ﺭﺍ ﺩﺭ ﺣﻴﻦ ﻋﻤﻠﻴﺎﺕ ﻭﺍﺭﺩ ﻛﻨﻴﻢ ‪ LCD‬ﺁﻥﺭﺍ ﻧﻤﻲﭘﺬﻳﺮﺩ‪.‬‬


‫ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش‬
‫اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ‬
‫ﻃﺮاﺣﯽ‪ ،‬ﺗﻮﻟﯿﺪ‪ ،‬اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ‬
‫آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ‬

‫ﺑﻨﺎﺑﺮﺍﻳﻦ ﺑﻪ ﺩﻭ ﺭﻭﺵ ﻣﻲﺗﻮﺍﻧﻴﻢ ﺍﺯ ﭘﺎﻳﺎﻥ ﻋﻤﻠﻴﺎﺕ ﻣﻄﻤﺌﻦ ﺷﻮﻳﻢ‪.‬‬

‫ﺍﻟﻒ‪ :‬ﭼﻚ ﻛﺮﺩﻥ ﺑﻴﺖ ﭘﺮﭼﻢ‬

‫‪r‬‬
‫‪.i‬‬
‫ﺏ‪ :‬ﺍﻳﺠﺎﺩ ﻳﻚ ﺗﺄﺧﻴﺮ ﺯﻣﺎﻧﻲ ﺑﻴﻦ ﺍﻃﻼﻋﺎﺕ ﻭﺭﻭﺩﻱ‬

‫‪s‬‬
‫‪r‬‬
‫‪ (٢‬ﺍﺑﺘﺪﺍ ﻳﻚ ﺯﻳﺮ ﺑﺮﻧﺎﻣﻪ‪ COMMAND‬ﻭﻳﻚ ﺯﻳﺮ ﺑﺮﻧﺎﻣﻪ ‪ DATA‬ﻣﻲﻧﻮﻳﺴﻴﻢ‪.‬‬

‫‪e‬‬
‫‪k‬‬
‫ﺑﺮﺍﻱ ﺯﻳﺮ ﺑﺮﻧﺎﻣﻪ ‪ DATA‬ﺑﺎﻳﺪ ﺗﻮﺟﻪ ﻛﺮﺩ ﻛﻪ ﭘﺎﻳﻪﻫﺎﻱ ﻛﻨﺘﺮﻟﻲ ﺑﻪﺻﻮﺭﺕ ﺯﻳﺮ ﻣﻘﺪﺍﺭﺩﻫﻲ ﻣﻲﺷﻮﻧﺪ‪.‬‬

‫‪a‬‬
‫ﺍﻟﻒ‪RS = 1 :‬‬
‫‪lM‬‬

‫ﺏ‪R/W = 0 :‬‬
‫‪o‬‬

‫ﺝ‪ :‬ﺑﻪ ﭘﺎﻳﻪ ‪ E‬ﺍﺑﺘﺪﺍ ﻳﻚ ﭘﺎﻟﺲ ‪ HIGH‬ﻭﺑﻌﺪ ﻳﻚ ﭘﺎﻟﺲ ‪ LOW‬ﻭﺍﺭﺩ ﻣﻲﻛﻨﻴﻢ‪.‬‬


‫‪tr‬‬
‫‪n‬‬

‫ﺑﺮﺍﻱ ﺯﻳﺮ ﺑﺮﻧﺎﻣﻪ ‪ DATA‬ﺑﺎﻳﺪ ﺗﻮﺟﻪ ﻛﺮﺩ ﻛﻪ ﭘﺎﻳﻪﻫﺎﻱ ﻛﻨﺘﺮﻟﻲ ﺑﻪ ﺻﻮﺭﺕ ﺯﻳﺮ ﻣﻘﺪﺍﺭﺩﻫﻲ ﻣﻲﺷﻮﻧﺪ‪.‬‬
‫‪o‬‬

‫ﺍﻟﻒ‪RS = 0 :‬‬
‫‪.C‬‬

‫ﺏ‪R/W = 0 :‬‬
‫‪w‬‬

‫ﺝ‪ :‬ﻭﺑﻪ ﭘﺎﻳﻪ ‪ E‬ﺍﺑﺘﺪﺍ ﻳﻚ ﭘﺎﻟﺶ ‪ HIGH‬ﻭﺑﻌﺪ ﻳﻚ ﭘﺎﻟﺲ ‪ LOW‬ﻭﺍﺭﺩ ﻣﻲﻛﻨﻴﻢ‪.‬‬


‫‪w‬‬
‫‪w‬‬

‫‪ ( ٣‬ﺑﺮﺍﻱ ﺍﻃﻤﻴﻨﺎﻥ ﺍﺯ ﻋﺪﻡ ﻣﺸﻐﻮﻝ ﺑﻮﺩﻥ ‪ LCD‬ﻫﻤﺎﻥﻃﻮﺭ ﻛﻪ ﮔﻔﺘﻪ ﺷﺪ ﻣﻲﺗﻮﺍﻧﻴﻢ ﺍﺯ ﭼﻚ ﻛﺮﺩﻥ‬

‫ﺑﻴﺖ ﭘﺮﭼﻢ ﺍﺳﺘﻔﺎﺩﻩ ﻛﻨﻴﻢ‪ .‬ﺑﺮﺍﻱ ﺍﻳﻦﻛﺎﺭ ﺑﺎﻳﺪ ﺗﻮﺟﻪ ﻛﺮﺩ ﻛﻪ ﺩﺭ ﺣﺎﻟﺖ ‪ R/W = 1‬ﻭ‪ RS = 1‬ﻭﻗﺘﻲ‬

‫ﻛﻪ ﺑﻴﺖ ﭘﺮﭼﻢ )‪ ( D7‬ﺑﺮﺍﺑﺮ ﻳﻚ ﺑﺎﺷﺪ ‪ LCD‬ﻣﺸﻐﻮﻝ ﺑﻮﺩﻩ ﻭ ﺍﺯ ﻋﻤﻠﻴﺎﺕ ﺩﺭﻭﻧﻲ ﻣﺮﺍﻗﺒﺖ ﻣﻲﻛﻨﺪ‬

‫ﻭﻫﻴﭻ ﺍﻃﻼﻋﺎﺕ ﺟﺪﻳﺪﻱ ﺭﺍ ﻧﻤﻲﭘﺬﻳﺮﺩ‪.‬‬


‫ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش‬
‫اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ‬
‫ﻃﺮاﺣﯽ‪ ،‬ﺗﻮﻟﯿﺪ‪ ،‬اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ‬
‫آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ‬

‫ﻭﻗﺘﻲ ‪ D7 = 0‬ﺑﺎﺷﺪ ‪ LCD‬ﺑﺮﺍﻱ ﺩﺭﻳﺎﻓﺖ ﺍﻃﻼﻋﺎﺕ ﺟﺪﻳﺪ ﺁﻣﺎﺩﻩ ﺍﺳﺖ‪ .‬ﺑﺮﻧﺎﻣﻪ ﭼﻚ ﻛﺮﺩﻥ ﺑﻴﺖ‬

‫ﭘﺮﭼﻢ ﺑﻪ ﻗﺮﺍﺭ ﺯﻳﺮ ﺍﺳﺖ‪.‬‬

‫‪r‬‬
‫‪READY:‬‬

‫‪.i‬‬
‫‪SETB D7‬‬

‫‪s‬‬
‫‪CLR‬‬ ‫‪RS‬‬

‫‪r‬‬
‫‪SETB R/W‬‬
‫‪BACK:‬‬

‫‪e‬‬
‫‪CLR‬‬ ‫‪E‬‬

‫‪k‬‬
‫‪SETB E‬‬

‫‪a‬‬
‫‪JB‬‬ ‫‪D7,BACK‬‬
‫‪RET‬‬
‫‪lM‬‬
‫‪ ( ٤‬ﺑﺮﺍﻱ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﺛﺒﺎﺕ ﺩﺳﺘﻮﺭﺍﻟﻌﻤﻞ ﺑﺎﻳﺪ ﺗﻮﺟﻪ ﺩﺍﺷﺖ ﻛﻪ ﺑﻌﻀﻲ ﺍﺯ ‪ COMMAND‬ﻫﺎ ﺑﺎ‬

‫ﺑﻌﻀﻲ ﺩﻳﮕﺮ ﺍﺯ ‪COMMAND‬ﻫﺎ ﻧﻤﻲﺗﻮﺍﻧﻨﺪ ﺩﺭ ﻳﻚ ﺑﺮﻧﺎﻣﻪ ﺍﺟﺮﺍ ﺷﻮﻧﺪ ﻭ ﺑﺎﻋﺚ ﻣﻲﺷﻮﻧﺪ ﻛﻪ ﺑﺮﻧﺎﻣﻪ‬
‫‪o‬‬
‫‪tr‬‬

‫ﺍﺟﺮﺍ ﻧﺸﻮﺩ‪ .‬ﭘﺲ ﻣﺘﺬﻛﺮ ﻣﻲﺷﻮﻳﻢ ﻛﻪ ﺣﺘﻲ ﺗﺮﺗﻴﺐ ﺑﻌﻀﻲ ﺍﺯ ‪ COMMAND‬ﻧﻴﺰ ﺑﺎﻳﺪ ﺭﻋﺎﻳﺖ ﺷﻮﺩ‪.‬‬
‫‪n‬‬

‫ﺩﺭ ﺟﺪﻭﻝ ﺯﻳﺮ ﻓﺮﻣﺎﻥﻫﺎ ﻭ ﻛﺪﻫﺎﻱ ﺛﺒﺎﺕ ﺩﺳﺘﻮﺭﺍﻟﻌﻤﻞ ﺁﻣﺪﻩ ﺍﺳﺖ‪.‬‬


‫‪o‬‬
‫‪.C‬‬

‫ﻓﺮﻣﺎﻥ ﺑﻪ ﺛﺒﺎﺕ ﺩﺳﺘﻮﺭﺍﻟﻌﻤﻞ‬ ‫ﻛﺪ‬


‫‪1‬‬
‫‪w‬‬

‫ﭘﺎﻙ ﻛﺮﺩﻥ ﺻﻔﺤﻪ ﻧﻤﺎﻳﺶ‬


‫ﺑﺎﺯ ﮔﺸﺖ ﺑﻪ ﻣﻜﺎﻥ ﺍﻭﻟﻴﻪ‬ ‫‪2‬‬
‫‪w‬‬

‫ﺟﺎﺑﺠﺎﻳﻲ ﻣﻜﺎﻥ ﻧﻤﺎ ﺑﻪ ﭼﭗ‬ ‫‪4‬‬


‫‪w‬‬

‫ﺟﺎﺑﺠﺎﻳﻲ ﻣﻜﺎﻥ ﻧﻤﺎ ﺑﻪ ﺭﺍﺳﺖ‬ ‫‪6‬‬


‫ﺟﺎﺑﺠﺎﻳﻲ ﻧﻤﺎﻳﺶ ﺑﻪ ﺭﺍﺳﺖ‬ ‫‪5‬‬
‫ﺟﺎﺑﺠﺎﻳﻲ ﻧﻤﺎﻳﺶ ﺑﻪ ﭼﭗ‬ ‫‪7‬‬
‫ﻧﻤﺎﻳﺶ ﺧﺎﻣﻮﺵ ﻣﻜﺎﻥ ﻧﻤﺎ ﺧﺎﻣﻮﺵ‬ ‫‪8‬‬
‫ﻧﻤﺎﻳﺶ ﺧﺎﻣﻮﺵ ﻣﻜﺎﻥ ﻧﻤﺎ ﺭﻭﺷﻦ‬ ‫‪A‬‬
‫ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش‬
‫اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ‬
‫ﻃﺮاﺣﯽ‪ ،‬ﺗﻮﻟﯿﺪ‪ ،‬اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ‬
‫آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ‬

‫ﻧﻤﺎﻳﺶ ﺭﻭﺷﻦ ﻣﻜﺎﻥ ﻧﻤﺎ ﺧﺎﻣﻮﺵ‬ ‫‪C‬‬


‫ﻧﻤﺎﻳﺶ ﺭﻭﺷﻦ ﻣﻜﺎﻥ ﻧﻤﺎﺭﻭﺷﻦ‬ ‫‪E‬‬
‫‪F‬‬

‫‪r‬‬
‫ﻧﻤﺎﻳﺶ ﺭﻭﺷﻦ ﻣﻜﺎﻥ ﭼﺸﻤﻚ ﺑﺰﻧﺪ‬

‫‪.i‬‬
‫ﺟﺎﺑﺠﺎﻳﻲ ﻣﺤﻞ ﻣﻜﺎﻥ ﻧﻤﺎ ﺑﻪ ﭼﭗ‬ ‫‪10‬‬

‫‪s‬‬
‫ﺟﺎﺑﺠﺎﻳﻲ ﻣﺤﻞ ﻣﻜﺎﻥ ﻧﻤﺎ ﺑﻪ ﺭﺍﺳﺖ‬ ‫‪14‬‬

‫‪r‬‬
‫ﻛﻞ ﺻﻔﺤﻪ ﻧﻤﺎﻳﺶ ﺑﻪ ﭼﭗ ﺟﺎﺑﺠﺎ ﺷﻮﺩ‬ ‫‪18‬‬

‫‪e‬‬
‫ﻛﻞ ﺻﻔﺤﻪ ﻧﻤﺎﻳﺶ ﺑﻪ ﺭﺍﺳﺖ ﺟﺎﺑﺠﺎ ﺷﻮﺩ‬ ‫‪1C‬‬

‫‪k‬‬
‫ﻣﻜﺎﻥ ﻧﻤﺎ ﺑﻪ ﺁﻏﺎﺯ ﺧﻂ ﺩﻭﻡ ﺑﺮﻭﺩ‬ ‫‪C0‬‬

‫‪a‬‬
‫ﺳﺎﺯ ﻣﺎﻥ ﺩﻫﻲ ‪٢‬ﺧﻂ ﻣﺎﺗﺮﻳﺲ ‪٧*٥‬‬ ‫‪38‬‬
‫‪lM‬‬

‫)‪:(٢١‬‬ ‫ﻧﻤﻮﻧﻪ ﺑﺮﻧﺎﻣﻪ‬


‫‪o‬‬

‫ﺑﺮﻧﺎﻣﻪﺍﻱ ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﻛﻠﻤﻪ ‪ NO‬ﺑﺮ ﺭﻭﻱ ‪ LCD‬ﻧﻤﺎﻳﺶ ﺩﺍﺩﻩ ﺷﻮﺩ‪) .‬ﺍﺯ ﺍﻳﺠﺎﺩ ﺗﺄﺧﻴﺮ ﺯﻣﺎﻧﻲ ﺑﺮﺍﻱ‬
‫‪tr‬‬

‫ﺍﻃﻤﻴﻨﺎﻥ ﺍﺯ ﻋﺪﻡ ﻣﺸﻐﻮﻝ ﺑﻮﺩﻥ ‪ LCD‬ﺍﺳﺘﻔﺎﺩﻩ ﻛﻨﻴﺪ(‪.‬‬


‫‪n‬‬
‫‪o‬‬

‫‪PORTLCD‬‬ ‫‪EQU‬‬ ‫‪P0‬‬


‫‪.C‬‬

‫‪RS‬‬ ‫‪EQU‬‬ ‫‪P2.5‬‬


‫‪R/W‬‬ ‫‪EQU‬‬ ‫‪P2.6‬‬
‫‪EN‬‬ ‫‪EQU‬‬ ‫‪P2.7‬‬
‫‪w‬‬

‫‪ORG 00H‬‬
‫‪MOV A,#38H‬‬
‫‪w‬‬

‫‪CALL COMMAND‬‬
‫‪MOV A,#0E‬‬
‫‪w‬‬

‫‪CALL COMMAND‬‬
‫‪MOV A,#01H‬‬
‫‪CALL COMMAND‬‬
‫‪MOV A,#06H‬‬
‫‪CALL COMMAND‬‬
‫‪MOV A,#89H‬‬
‫‪CALL COMMAND‬‬
‫ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش‬
‫اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ‬
‫ اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ‬،‫ ﺗﻮﻟﯿﺪ‬،‫ﻃﺮاﺣﯽ‬
‫آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ‬

MOV A,#’ N ’
CALL DAT
MOV A,#’ O ’

r
CALL DAT

.i
SJMP $

s
COMMAND:

r
MOV PORTLCD,A

e
CALL DELAY

k
CLR RS
CLR R/W

a
SETB EN
lM
CLR EN
RET

DAT:
o

MOV PORTLCD,A
tr

CALL DELAY
SETB RS
n

CLR R/W
SETB EN
o

CLR EN
.C

RET

DELAY:
w

MOV R0,#50
K1:MOV R1,#255
w

K2:DJNZ R1,K2
DJNZ R0,K1
w

RET
END
‫ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش‬
‫اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ‬
‫ﻃﺮاﺣﯽ‪ ،‬ﺗﻮﻟﯿﺪ‪ ،‬اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ‬
‫آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ‬

‫‪r‬‬
‫‪.i‬‬
‫‪s‬‬
‫‪r‬‬
‫‪e‬‬
‫‪k‬‬
‫‪a‬‬
‫‪lM‬‬
‫‪o‬‬
‫‪tr‬‬
‫‪n‬‬
‫‪o‬‬
‫‪.C‬‬

‫ﭘﺮﻭﮊﻩ ﺷﻤﺎﺭﻩ ‪١‬‬


‫‪w‬‬

‫ﺍﻳﻦ ﺑﺮﻧﺎﻣﻪ ﺍﺯ ﺻﻔﺤﻪ ﻛﻠﻴﺪ ﻳﻚ ﻋﺪﺩ ﺩﻭ ﺭﻗﻤﻲ ﺩﺭﻳﺎﻓﺖ ﻣﻲﻛﻨﺪ ﻭ ﺑﺮﻧﻤﺎﻳﺶ ﻣﻲﺩﻫﺪ ﻛﻪ ﻣﺸﺨﺺ ﻛﻨﻨﺪﻩ‬
‫‪w‬‬
‫‪w‬‬

‫ﺗﻌﺪﺍﺩ ﻭ ﺩﻭﺭ ﻣﻮﺗﻮﺭ ﺍﺳﺖ )ﻣﻮﺗﻮﺭ ﭘﻠﻪﺍﻱ ‪ ١/٨‬ﺩﺭﺟﻪ(‪.‬‬

‫ﺩﺭ ﺍﺩﺍﻣﻪ ﺑﺮﻧﺎﻣﻪ ﻋﺪﺩ ﺩﻭﺭﻗﻤﻲ ﺩﻳﮕﺮﻱ ﺭﺍ ﺟﻬﺖ ﺗﻨﻈﻴﻢ ﺳﺮﻋﺖ ﻣﻮﺗﻮﺭ ﺍﺯ ﺷﻤﺎ ﺩﺭﻳﺎﻓﺖ ﻣﻲﻧﻤﺎﻳﺪ ﻭﺁﻥ‬

‫ﻋﺪﺩ ﺭﺍ ﻧﻤﺎﻳﺶ ﻣﻲﺩﻫﺪ ﻛﻪ ﺩﺭ ﻋﻤﻞ ﻫﻤﺎﻥ ﻣﻴﺰﺍﻥ ﺗﺄﺧﻴﺮ ﺩﺭ ﺑﻴﻦ ﻫﺮ ﮔﺎﻡ ﻣﻮﺗﻮﺭ ﺍﺳﺖ ﻭ ﺑﻌﺪ ﺍﺯ ﺁﻥ ﻣﻮﺗﻮﺭ‬

‫ﺭﺍ ﺑﺎ ﻣﺸﺨﺼﺎ ﻭﺍﺭﺩ ﺷﺪﻩ ﺑﻪ ﺣﺮﻛﺖ ﺩﺭ ﻣﻲﺁﻭﺭﺩ‪.‬‬


‫ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش‬
‫اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ‬
‫ اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ‬،‫ ﺗﻮﻟﯿﺪ‬،‫ﻃﺮاﺣﯽ‬
‫آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ‬

BUSER EQU P2.0


ROW1 EQU P2.7

r
ROW2 EQU P2.6

.i
ROW3 EQU P2.5
ROW4 EQU P2.4

s
COL1 EQU P2.3
COL2 EQU P2.2

r
COL3 EQU P2.1

e
STEPPERPORT EQU P0

k
DELAYCOUNTER EQU 19H
NUMBERLOAD EQU 20H

a
TEMPKEYSCAN EQU 21H
DAHGANKEYSCAN EQU 22H
lM
NUMBERDISPLAY EQU 23H
SEGMENT1 EQU 24H
SEGMENT2 EQU 25H
TEMPDOR EQU 26H
o

DORNUMBER EQU 27H


tr

SPEEDNUMBER EQU 28H


n

ORG 0
JMP MAIN
o

ORG 1BH
.C

INTERRUPTTIMER1:
MOV TH1,#HIGH(64000)
MOV TL1,#LOW(64000)
w

CLR TF1
MOV P1,SEGMENT1
CALL DELAYDISPLAY
w

MOV P1,SEGMENT2
CALL DELAYDISPLAY
w

MOV P1,#0FFH
RETI

MAIN:
MOV TMOD,#11H
MOV IE,#88H
MOV SP,#50H
MOV TH1,#HIGH(64000)
MOV TL1,#LOW(64000)
‫ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش‬
‫اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ‬
‫ اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ‬،‫ ﺗﻮﻟﯿﺪ‬،‫ﻃﺮاﺣﯽ‬
‫آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ‬

SETB TR1
MOV NUMBERDISPLAY,#0H
CALL DISPLAY
LOOPMAIN:

r
CALL KEYSCAN

.i
MOV DORNUMBER,NUMBERLOAD

s
CALL DELAY
MOV NUMBERDISPLAY,#0

r
CALL DISPLAY

e
k
CALL KEYSCAN
MOV SPEEDNUMBER,NUMBERLOAD

a
SCANLEFTRIGHT:
lM
CLR ROW4
JNB COL3,RIGHT
JNB COL1,LEFT
JMP SCANLEFTRIGHT
o
tr

;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
n

; --------------------RIGHT
‫ﺍﻳﺠﺎﺩ ﺣﺮﻛﺖ ﻣﻮﺗﻮﺭ ﺑﻪ ﺳﻤﺖ ﺭﺍﺳﺖ‬
o

RIGHT:
.C

MOV TEMPDOR,#50
MOV NUMBERDISPLAY,DORNUMBER
CALL DISPLAY
w

LOOPRIGHT:
MOV STEPPERPORT,#00001001B
CALL SPEED
w

MOV STEPPERPORT,#00001100B
CALL SPEED
w

MOV STEPPERPORT,#00000110B
CALL SPEED
MOV STEPPERPORT,#00000011B
CALL SPEED
DJNZ TEMPDOR,LOOPRIGHT
DJNZ DORNUMBER,RIGHT
MOV NUMBERDISPLAY,DORNUMBER
CALL DISPLAY
CLR BUSER
‫ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش‬
‫اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ‬
‫ اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ‬،‫ ﺗﻮﻟﯿﺪ‬،‫ﻃﺮاﺣﯽ‬
‫آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ‬

CALL DELAY
SETB BUSER
JMP LOOPMAIN
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

r
+
; ----------------LEFT

.i
‫ﺍﻳﺠﺎﺩ ﺣﺮﻛﺖ ﻣﻮﺗﻮﺭ ﺑﻪ ﺳﻤﺖ ﭼﭗ‬

s
LEFT:

r
MOV TEMPDOR,#50
MOV NUMBERDISPLAY,DORNUMBER

e
CALL DISPLAY

k
LOOPLEFT:
MOV STEPPERPORT,#00000011B

a
CALL SPEED
MOV STEPPERPORT,#00000110B
lM
CALL SPEED
MOV STEPPERPORT,#00001100B
CALL SPEED
MOV STEPPERPORT,#00001001B
o

CALL SPEED
tr

DJNZ TEMPDOR,LOOPLEFT
DJNZ DORNUMBER,LEFT
MOV NUMBERDISPLAY,DORNUMBER
n

CALL DISPLAY
CLR BUSER
o

CALL DELAY
.C

SETB BUSER
JMP LOOPMAIN
;
w

++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++
; ----------------SPEED
w

.‫ﺍﻳﻦ ﺯﻳﺮﺑﺮﻧﺎﻣﻪ ﺗﺄﺧﻴﺮ ﻻﺯﻡ ﺭﺍ ﺑﻴﻦ ﻫﺮ ﮔﺎﻡ ﻣﻮﺗﻮﺭ ﺍﻳﺠﺎﺩ ﻣﻲﻧﻤﺎﻳﺪ‬


SPEED:
w

MOV R6,SPEEDNUMBER
LOOPSPEED:
MOV TH0,#0FCH
MOV TL0,#18H
SETB TR0
LOOP1S:JNB TF0,LOOP1S
CLR TR0
CLR TF0
; ------------STOP TEST
‫ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش‬
‫اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ‬
‫ اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ‬،‫ ﺗﻮﻟﯿﺪ‬،‫ﻃﺮاﺣﯽ‬
‫آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ‬

CLR ROW4
;JNB COL2,PAUSE
SETB ROW4
; -------------------------------

r
DJNZ R6,LOOPSPEED
RET

.i
s
; ---------SCAN KEYBOARD ------------
KEYSCAN:

r
SETB ROW4

e
CLR ROW1
JNB COL1,KEY1

k
JNB COL2,KEY2
JNB COL3,KEY3

a
SETB ROW1
lM
CLR ROW2
JNB COL1,KEY4
JNB COL2,KEY5
o

JNB COL3,KEY6
SETB ROW2
tr

CLR ROW3
n

JNB COL1,KEY7
JNB COL2,KEY8
o

JNB COL3,KEY9
SETB ROW3
.C

CLR ROW4
JNB COL2,KEYZERO
w

SETB ROW4
JMP KEYSCAN
w

; ---------FIND KEYBOARD PERESS ------------


KEY1:
w

SETB ROW1
MOV TEMPKEYSCAN,#1
JMP KEYLOAD

KEY2:
SETB ROW1
MOV TEMPKEYSCAN,#2
JMP KEYLOAD
‫ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش‬
‫اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ‬
‫ اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ‬،‫ ﺗﻮﻟﯿﺪ‬،‫ﻃﺮاﺣﯽ‬
‫آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ‬

KEY3:
SETB ROW1
MOV TEMPKEYSCAN,#3
JMP KEYLOAD

r
KEY4:

.i
SETB ROW2

s
MOV TEMPKEYSCAN,#4
JMP KEYLOAD

r
e
KEY5:
SETB ROW2

k
MOV TEMPKEYSCAN,#5
JMP KEYLOAD

a
lM
KEY6:
SETB ROW2
MOV TEMPKEYSCAN,#6
JMP KEYLOAD
o

KEY7:
tr

SETB ROW3
MOV TEMPKEYSCAN,#7
n

JMP KEYLOAD
o

KEY8:
SETB ROW3
.C

MOV TEMPKEYSCAN,#8
JMP KEYLOAD
w

KEY9:
SETB ROW3
w

MOV TEMPKEYSCAN,#9
JMP KEYLOAD
w

KEYZERO:
SETB ROW4
MOV TEMPKEYSCAN,#0
JMP KEYLOAD
; ------ MERG FIRST NUMBER & SECOND ------------
‫ ﻭ ﻣﺤﺎﺳﺒﺎﺕ‬7seg ‫ﺍﻳﺠﺎﺩ ﻳﻚ ﻋﺪﺩ ﺩﻭﺭﻗﻤﻲ ﺑﺮﺍﻱ‬
KEYLOAD:
JNB 07H,DAHGAN
‫ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش‬
‫اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ‬
‫ اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ‬،‫ ﺗﻮﻟﯿﺪ‬،‫ﻃﺮاﺣﯽ‬
‫آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ‬

MOV A,TEMPKEYSCAN
MOV B,DAHGANKEYSCAN
ADD A,B
MOV NUMBERLOAD,A

r
MOV NUMBERDISPLAY,A
CALL DISPLAY

.i
CALL DELAY

s
CLR 07H
RET

r
e
DAHGAN:
MOV A,TEMPKEYSCAN

k
MOV B,#10
MUL AB

a
MOV DAHGANKEYSCAN,A
lM
SETB 07H
MOV NUMBERDISPLAY,A
CALL DISPLAY
CALL DELAY
o

JMP KEYSCAN
tr

DELAYDISPLAY:
n

MOV R7,#255
LOOPDISPLAY:
o

DJNZ R7,LOOPDISPLAY
RET
.C

; ---------SPELLET ONE NUMBER TO 2 DIGIT ------------


DISPLAY:
w

MOV A,NUMBERDISPLAY
MOV B,#10
w

DIV AB
ORL B,#10H
ORL A,#20H
w

MOV SEGMENT1,B
MOV SEGMENT2,A
RET

; ---------DELAY 50 MIL SECOND -----------


DELAY:
MOV DELAYCOUNTER,#10
LDK:
MOV TH0,#3CH
‫ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش‬
‫اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ‬
‫ﻃﺮاﺣﯽ‪ ،‬ﺗﻮﻟﯿﺪ‪ ،‬اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ‬
‫آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ‬

‫‪MOV TL0,#0B0H‬‬
‫‪SETB TR0‬‬
‫‪LOOPDELAY:JNB TF0,LOOPDELAY‬‬
‫‪CLR TR0‬‬

‫‪r‬‬
‫‪CLR‬‬
‫‪TF0‬‬

‫‪.i‬‬
‫‪DJN‬‬

‫‪s‬‬
‫‪Z‬‬
‫‪DEL‬‬

‫‪r‬‬
‫‪AYC‬‬

‫‪e‬‬
‫‪OUN‬‬
‫‪TER,‬‬

‫‪k‬‬
‫‪LDK‬‬
‫‪RET‬‬

‫‪a‬‬
‫‪END‬‬
‫‪lM‬‬
‫‪o‬‬
‫‪tr‬‬
‫‪n‬‬
‫‪o‬‬
‫‪.C‬‬
‫‪w‬‬
‫‪w‬‬

‫ﺷﻤﺎﺗﻴ‬
‫ﻙ ﺑﺮﺩ‬
‫‪w‬‬

‫ﺁﻣﻮﺯﺷ‬
‫ﻱ‬
‫ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش‬
‫اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ‬
‫ﻃﺮاﺣﯽ‪ ،‬ﺗﻮﻟﯿﺪ‪ ،‬اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ‬
‫آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ‬

‫‪r‬‬
‫‪.i‬‬
‫‪s‬‬
‫‪r‬‬
‫‪e‬‬
‫‪k‬‬
‫‪a‬‬
‫‪lM‬‬
‫‪o‬‬
‫‪tr‬‬
‫‪n‬‬
‫‪o‬‬
‫‪.C‬‬
‫‪w‬‬
‫‪w‬‬
‫‪w‬‬

‫ﺁﺩﺭﺱ‬ ‫ﺁﺩﺭﺱ‬
‫ﺁﺩﺭﺱ ﺑﻴﺖ‬ ‫ﺁﺩﺭﺱ ﺑﻴﺖ‬
‫ﺑﺎﻳﺖ‬ ‫ﺑﺎﻳﺖ‬
‫ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش‬
‫اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ‬
‫ﻃﺮاﺣﯽ‪ ،‬ﺗﻮﻟﯿﺪ‪ ،‬اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ‬
‫آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ‬

‫‪7F‬‬ ‫‪FF‬‬
‫‪F0‬‬ ‫‪F7‬‬ ‫‪F6‬‬ ‫‪F5‬‬ ‫‪F4‬‬ ‫‪F3‬‬ ‫‪F2‬‬ ‫‪F1‬‬ ‫‪F0‬‬ ‫‪B‬‬

‫‪r‬‬
‫‪E0‬‬ ‫‪E7‬‬ ‫‪E6‬‬ ‫‪E5‬‬ ‫‪E4‬‬ ‫‪E3‬‬ ‫‪E2‬‬ ‫‪E1‬‬ ‫‪E0‬‬ ‫‪ACC‬‬
‫ﻫﻤﻪ ﻣﻨﻈﻮﺭﻩ‪RAM‬ﺣﺎﻓﻈﻪ‬

‫‪.i‬‬
‫‪D0‬‬ ‫‪D7‬‬ ‫‪D6‬‬ ‫‪D5‬‬ ‫‪D4‬‬ ‫‪D3‬‬ ‫‪D2‬‬ ‫‪D1‬‬ ‫‪D0‬‬ ‫‪PSW‬‬

‫‪s‬‬
‫‪r‬‬
‫‪30‬‬ ‫‪B8‬‬ ‫‪----‬‬ ‫‪----‬‬ ‫‪----‬‬ ‫‪BC‬‬ ‫‪BB‬‬ ‫‪BA‬‬ ‫‪B9‬‬ ‫‪B8‬‬ ‫‪IP‬‬

‫‪e‬‬
‫‪2F‬‬ ‫‪7F‬‬ ‫‪7E‬‬ ‫‪7D‬‬ ‫‪7C‬‬ ‫‪7B‬‬ ‫‪7A‬‬ ‫‪79‬‬ ‫‪78‬‬

‫‪k‬‬
‫‪2E‬‬ ‫‪77‬‬ ‫‪76‬‬ ‫‪75‬‬ ‫‪74‬‬ ‫‪73‬‬ ‫‪72‬‬ ‫‪71‬‬ ‫‪70‬‬ ‫‪B0‬‬ ‫‪B7‬‬ ‫‪B6‬‬ ‫‪B5‬‬ ‫‪B4‬‬ ‫‪B3‬‬ ‫‪B2‬‬ ‫‪B1‬‬ ‫‪B0‬‬ ‫‪P3‬‬

‫‪a‬‬
‫‪2D‬‬ ‫‪6F‬‬ ‫‪6E‬‬ ‫‪6D‬‬ ‫‪6C‬‬ ‫‪6B‬‬ ‫‪6A‬‬ ‫‪69‬‬ ‫‪68‬‬
‫‪lM‬‬
‫‪2C‬‬ ‫‪67‬‬ ‫‪66‬‬ ‫‪65‬‬ ‫‪64‬‬ ‫‪63‬‬ ‫‪62‬‬ ‫‪61‬‬ ‫‪60‬‬ ‫‪A8‬‬ ‫‪AF‬‬ ‫‪----‬‬ ‫‪----‬‬ ‫‪AC‬‬ ‫‪AB‬‬ ‫‪AA‬‬ ‫‪A9‬‬ ‫‪A8‬‬ ‫‪IE‬‬
‫‪2B‬‬ ‫‪5F‬‬ ‫‪5E‬‬ ‫‪5D‬‬ ‫‪5C‬‬ ‫‪5B‬‬ ‫‪5A‬‬ ‫‪59‬‬ ‫‪58‬‬
‫‪2A‬‬ ‫‪57‬‬ ‫‪56‬‬ ‫‪55‬‬ ‫‪54‬‬ ‫‪53‬‬ ‫‪52‬‬ ‫‪51‬‬ ‫‪50‬‬ ‫‪A0‬‬ ‫‪A7‬‬ ‫‪A6‬‬ ‫‪A5‬‬ ‫‪A4‬‬ ‫‪A3‬‬ ‫‪A2‬‬ ‫‪A1‬‬ ‫‪A0‬‬ ‫‪P2‬‬
‫‪o‬‬

‫‪29‬‬ ‫‪4F‬‬ ‫‪4E‬‬ ‫‪4D‬‬ ‫‪4C‬‬ ‫‪4B‬‬ ‫‪4A‬‬ ‫‪49‬‬ ‫‪48‬‬


‫‪28‬‬ ‫‪47‬‬ ‫‪46‬‬ ‫‪45‬‬ ‫‪44‬‬ ‫‪43‬‬ ‫‪42‬‬ ‫‪41‬‬ ‫‪40‬‬ ‫‪SBUF‬‬
‫‪tr‬‬

‫ﺑﻴﺖ ﺁﺩﺭﺱ ﭘﺬﻳﺮ ﻧﻴﺴﺖ‬

‫‪27‬‬ ‫‪3F‬‬ ‫‪3E‬‬ ‫‪3D‬‬ ‫‪3C‬‬ ‫‪3B‬‬ ‫‪3A‬‬ ‫‪39‬‬ ‫‪38‬‬ ‫‪98‬‬ ‫‪9F‬‬ ‫‪9E‬‬ ‫‪9D‬‬ ‫‪9C‬‬ ‫‪9B‬‬ ‫‪9A‬‬ ‫‪99‬‬ ‫‪98‬‬ ‫‪SCON‬‬
‫‪26‬‬ ‫‪37‬‬ ‫‪36‬‬ ‫‪35‬‬ ‫‪34‬‬ ‫‪33‬‬ ‫‪32‬‬ ‫‪31‬‬ ‫‪30‬‬
‫‪n‬‬

‫‪25‬‬ ‫‪2F‬‬ ‫‪2E‬‬ ‫‪2D‬‬ ‫‪2C‬‬ ‫‪2B‬‬ ‫‪2A‬‬ ‫‪29‬‬ ‫‪28‬‬ ‫‪90‬‬ ‫‪97‬‬ ‫‪96‬‬ ‫‪95‬‬ ‫‪94‬‬ ‫‪93‬‬ ‫‪92‬‬ ‫‪91‬‬ ‫‪90‬‬ ‫‪P1‬‬
‫‪o‬‬

‫‪24‬‬ ‫‪27‬‬ ‫‪26‬‬ ‫‪25‬‬ ‫‪24‬‬ ‫‪23‬‬ ‫‪22‬‬ ‫‪21‬‬ ‫‪20‬‬


‫‪.C‬‬

‫‪23‬‬ ‫‪1F‬‬ ‫‪1E‬‬ ‫‪1D‬‬ ‫‪1C‬‬ ‫‪1B‬‬ ‫‪1A‬‬ ‫‪19‬‬ ‫‪18‬‬ ‫‪8D‬‬ ‫ﺑﻴﺖ ﺁﺩﺭﺱ ﭘﺬﻳﺮ ﻧﻴﺴﺖ‬ ‫‪TH1‬‬
‫‪22‬‬ ‫‪17‬‬ ‫‪16‬‬ ‫‪15‬‬ ‫‪14‬‬ ‫‪13‬‬ ‫‪12‬‬ ‫‪11‬‬ ‫‪10‬‬ ‫‪8C‬‬ ‫ﺑﻴﺖ ﺁﺩﺭﺱ ﭘﺬﻳﺮ ﻧﻴﺴﺖ‬ ‫‪TH0‬‬
‫‪w‬‬

‫‪21‬‬ ‫‪0F‬‬ ‫‪0E‬‬ ‫‪0D‬‬ ‫‪0C‬‬ ‫‪0B‬‬ ‫‪0A‬‬ ‫‪09‬‬ ‫‪08‬‬ ‫‪8B‬‬ ‫ﺑﻴﺖ ﺁﺩﺭﺱ ﭘﺬﻳﺮ ﻧﻴﺴﺖ‬ ‫‪TL1‬‬
‫‪20‬‬ ‫‪07‬‬ ‫‪06‬‬ ‫‪05‬‬ ‫‪04‬‬ ‫‪03‬‬ ‫‪02‬‬ ‫‪01‬‬ ‫‪00‬‬ ‫‪8A‬‬ ‫ﺑﻴﺖ ﺁﺩﺭﺱ ﭘﺬﻳﺮ ﻧﻴﺴﺖ‬ ‫‪TL0‬‬
‫‪w‬‬

‫‪1F‬‬ ‫‪89‬‬ ‫ﺑﻴﺖ ﺁﺩﺭﺱ ﭘﺬﻳﺮ ﻧﻴﺴﺖ‬ ‫‪TMOD‬‬


‫ﺑﺎﻧﻚ ‪٣‬‬
‫‪18‬‬ ‫‪88‬‬ ‫‪8F‬‬ ‫‪8E‬‬ ‫‪8D‬‬ ‫‪8C‬‬ ‫‪8B‬‬ ‫‪8A‬‬ ‫‪89‬‬ ‫‪88‬‬ ‫‪TCON‬‬
‫‪w‬‬

‫‪17‬‬ ‫‪87‬‬ ‫ﺑﻴﺖ ﺁﺩﺭﺱ ﭘﺬﻳﺮﻧﻴﺴﺖ‬ ‫‪PCON‬‬


‫ﺑﺎﻧﻚ ‪٢‬‬
‫‪10‬‬
‫‪0F‬‬ ‫‪83‬‬ ‫ﺑﻴﺖ ﺁﺩﺭﺱ ﭘﺬﻳﺮ ﻧﻴﺴﺖ‬ ‫‪DPH‬‬
‫ﺑﺎﻧﻚ ‪١‬‬
‫‪08‬‬ ‫‪82‬‬ ‫ﺑﻴﺖ ﺁﺩﺭﺱ ﭘﺬﻳﺮ ﻧﻴﺴﺖ‬ ‫‪DPL‬‬
‫‪07‬‬ ‫‪81‬‬ ‫ﺑﻴﺖ ﺁﺩﺭﺱ ﭘﺬﻳﺮ ﻧﻴﺴﺖ‬ ‫‪SP‬‬
‫‪R0-R7‬ﺑﺎﻧﻚ ﻗﺮﺍﺭﺩﺍﺩﻱ ﺛﺒﺎﺕ ﺑﺮﺍﻱ‬
‫‪00‬‬ ‫‪80‬‬ ‫‪87‬‬ ‫‪86‬‬ ‫‪85‬‬ ‫‪84‬‬ ‫‪83‬‬ ‫‪82‬‬ ‫‪81‬‬ ‫‪80‬‬ ‫‪P0‬‬
‫ﺛﺒﺎﺗﻬﺎﻱ ﻭﻳﮋﻩ‬
‫ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش‬
‫اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ‬
‫ﻃﺮاﺣﯽ‪ ،‬ﺗﻮﻟﯿﺪ‪ ،‬اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ‬
‫آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ‬

‫ﺧﻼﺻﻪ ﺣﺎﻓﻈﻪ ﺩﺭﻭﻥ ﺗﺮﺍﺷﻪ ‪٨٠٥١‬‬

‫‪r‬‬
‫‪.i‬‬
‫‪s‬‬
‫‪r‬‬
‫‪e‬‬
‫‪k‬‬
‫‪a‬‬
‫‪lM‬‬
‫‪o‬‬
‫‪tr‬‬
‫‪n‬‬
‫‪o‬‬
‫‪.C‬‬
‫‪w‬‬
‫‪w‬‬
‫‪w‬‬
‫ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش‬
‫اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ‬
‫ﻃﺮاﺣﯽ‪ ،‬ﺗﻮﻟﯿﺪ‪ ،‬اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ‬
‫آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ‬

‫ﺁﺩﺭﺳﻬﺎﻱ ﺑﻴﺘﻲ ﺍﺯ ﻗﺒﻞ ﺗﻌﻴﻴﻦ ﺷﺪﻩ ﺩﺭ ‪89C51‬‬


‫ﻣﻔﻬﻮﻡ‬ ‫ﺁﺩﺭﺱ ﺑﻴﺖ‬ ‫ﻣﻮﻗﻌﻴﺖ ﺑﻴﺖ‬ ‫ﻧﻤﺎﺩ‬

‫‪r‬‬
‫ﭘﺮﭼﻢ ﻧﻘﻠﻲ‬ ‫‪D7H‬‬ ‫‪PSW.7‬‬ ‫‪CY‬‬

‫‪.i‬‬
‫ﭘﺮﭼﻢ ﻧﻘﻠﻲ ﻛﻤﻜﻲ‬ ‫‪D6H‬‬ ‫‪PSW.6‬‬ ‫‪AC‬‬

‫‪s‬‬
‫‪r‬‬
‫ﭘﺮﭼﻢ ‪0‬‬ ‫‪D5H‬‬ ‫‪PSW.5‬‬ ‫‪F0‬‬

‫‪e‬‬
‫ﺑﻴﺖ ﺍﻧﺘﺨﺎﺏ ﺭﺟﻴﺴﺘﺮ ﺑﺎﻧﻚ‪١‬‬ ‫‪D4H‬‬ ‫‪PSW.4‬‬ ‫‪RS1‬‬

‫‪k‬‬
‫‪D3H‬‬ ‫‪PSW.3‬‬ ‫‪RS0‬‬

‫‪a‬‬
‫ﺑﻴﺖ ﺍﻧﺘﺨﺎﺏ ﺭﺟﻴﺴﺘﺮ ﺑﺎﻧﻚ‪٠‬‬
‫‪lM‬‬
‫ﭘﺮﭼﻢ ﺳﺮﺭﻳﺰ‬ ‫‪D2H‬‬ ‫‪PSW.2‬‬ ‫‪OV‬‬

‫ﭘﺮﭼﻢ ﺗﻮﺍﺯﻥ‬ ‫‪D0H‬‬ ‫‪PSW.0‬‬ ‫‪P‬‬


‫‪o‬‬

‫ﭘﺮﭼﻢ ﺳﺮﺭﻳﺰ ﺗﺎﻳﻤﺮ ‪1‬‬ ‫‪8FH‬‬ ‫‪TCON.7‬‬ ‫‪TF1‬‬


‫‪tr‬‬

‫ﺑﻴﺖ ﻛﻨﺘﺮﻝ ﺭﺍﻩﺍﻧﺪﺍﺯﻱ ﺗﺎﻳﻤﺮ ‪1‬‬ ‫‪8EH‬‬ ‫‪TCON.6‬‬ ‫‪TR1‬‬


‫‪n‬‬

‫ﭘﺮﭼﻢ ﺳﺮﺭﻳﺰ ﺗﺎﻳﻤﺮ‪٠‬‬ ‫‪8DH‬‬ ‫‪TCON.5‬‬ ‫‪TF0‬‬


‫‪o‬‬

‫ﺑﻴﺖ ﻛﻨﺘﺮﻝ ﺭﺍﻩﺍﻧﺪﺍﺯﻱ ﺗﺎﻳﻤﺮ ‪0‬‬ ‫‪8CH‬‬ ‫‪TCON.4‬‬ ‫‪TR0‬‬


‫‪.C‬‬

‫ﭘﺮﭼﻢ ﻟﺒﺔ ﻭﻗﻔﺔ ‪1‬‬ ‫‪8BH‬‬ ‫‪TCON.3‬‬ ‫‪IE1‬‬


‫‪w‬‬

‫ﺑﻴﺖ ﻛﻨﺘﺮﻝ ﻧﻮﻉ ﻭﻗﻔﺔ ‪1‬‬ ‫‪8AH‬‬ ‫‪TCON.2‬‬ ‫‪IT1‬‬


‫‪w‬‬

‫ﭘﺮﭼﻢ ﻟﺒﻪ ﻭﻗﻔﺔ ‪0‬‬ ‫‪89H‬‬ ‫‪TCON.1‬‬ ‫‪IE0‬‬

‫ﺑﻴﺖ ﻛﻨﺘﺮﻝ ﻧﻮﻉ ﻭﻗﻔﺔ ‪0‬‬


‫‪w‬‬

‫‪88H‬‬ ‫‪TCON.0‬‬ ‫‪IT0‬‬

‫ﺑﻴﺖ ﻛﻨﺘﺮﻝ ﺣﺎﻟﺖ ﺳﺮﻳﺎﻝ ‪0‬‬ ‫‪9FH‬‬ ‫‪SCON.7‬‬ ‫‪SM0‬‬

‫ﺑﻴﺖ ﻛﻨﺘﺮﻝ ﺣﺎﻟﺖ ﺳﺮﻳﺎﻝ ‪1‬‬ ‫‪9EH‬‬ ‫‪SCON.6‬‬ ‫‪SM1‬‬

‫ﺑﻴﺖ ﻛﻨﺘﺮﻝ ﺣﺎﻟﺖ ﺳﺮﻳﺎﻝ ‪2‬‬ ‫‪9DH‬‬ ‫‪SCON.5‬‬ ‫‪SM2‬‬

‫ﺗﻮﺍﻧﺎﺳﺎﺯ ﺩﺭﻳﺎﻓﺖ ﻛﻨﻨﺪﻩ‬ ‫‪9CH‬‬ ‫‪SCON.4‬‬ ‫‪REN‬‬


‫ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش‬
‫اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ‬
‫ﻃﺮاﺣﯽ‪ ،‬ﺗﻮﻟﯿﺪ‪ ،‬اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ‬
‫آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ‬

‫ﺑﻴﺖ ‪ 8‬ﺍﺭﺳﺎﻝ‬ ‫‪9BH‬‬ ‫‪SCON.3‬‬ ‫‪TB8‬‬

‫ﺑﻴﺖ ‪ 8‬ﺩﺭﻳﺎﻓﺖ‬ ‫‪9AH‬‬ ‫‪SCON.2‬‬ ‫‪RB8‬‬

‫‪r‬‬
‫‪.i‬‬
‫‪s‬‬
‫‪r‬‬
‫‪e‬‬
‫‪k‬‬
‫‪a‬‬
‫‪lM‬‬
‫‪o‬‬
‫‪tr‬‬
‫‪n‬‬
‫‪o‬‬
‫‪.C‬‬
‫‪w‬‬
‫‪w‬‬
‫‪w‬‬
‫ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش‬
‫اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ‬
‫ﻃﺮاﺣﯽ‪ ،‬ﺗﻮﻟﯿﺪ‪ ،‬اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ‬
‫آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ‬

‫ﺍﺩﺍﻣﻪ ﺍﺯ ﺻﻔﺤﻪ ﻗﺒﻞ‬

‫ﻣﻔﻬﻮﻡ‬ ‫ﺁﺩﺭﺱ ﺑﻴﺖ‬ ‫ﻣﻮﻗﻌﻴﺖ ﺑﻴﺖ‬ ‫ﻧﻤﺎﺩ‬

‫‪r‬‬
‫ﭘﺮﭼﻢ ﻭﻗﻔﻪ ﺍﺭﺳﺎﻝ‬ ‫‪99H‬‬ ‫‪SCON.1‬‬ ‫‪TI‬‬

‫‪.i‬‬
‫ﭘﺮﭼﻢ ﻭﻗﻔﻪ ﺩﺭﻳﺎﻓﺖ‬ ‫‪98H‬‬ ‫‪SCON.0‬‬ ‫‪RI‬‬

‫‪s‬‬
‫‪r‬‬
‫ﺗﻮﺍﻧﺎﺳﺎﺯ ﻫﻤﺔ ﻭﻗﻔﻪ ﻫﺎ‬ ‫‪AFH‬‬ ‫‪IE.7‬‬ ‫‪EA‬‬

‫‪e‬‬
‫ﺗﻮﺍﻧﺎﺳﺎﺯ ﻭﻗﻔﻪ ﺩﺭﮔﺎﻩ ﺳﺮﻳﺎﻝ‬ ‫‪ACH‬‬ ‫‪IE.4‬‬ ‫‪ES‬‬

‫‪k‬‬
‫ﺗﻮﺍﻧﺎﺳﺎﺯ ﻭﻗﻔﻪ ﺗﺎﻳﻤﺮ ‪1‬‬ ‫‪ABH‬‬ ‫‪IE.3‬‬ ‫‪ETI‬‬

‫ﺗﻮﺍﻧﺎﺳﺎﺯ ﻭﻗﻔﻪ ﺧﺎﺭﺟﻲ ‪1‬‬ ‫‪AAH‬‬


‫‪a‬‬ ‫‪IE.2‬‬ ‫‪EX1‬‬
‫‪lM‬‬

‫ﺗﻮﺍﻧﺎﺳﺎﺯ ﻭﻗﻔﻪ ﺗﺎﻳﻤﺮ ‪0‬‬ ‫‪A9H‬‬ ‫‪IE.1‬‬ ‫‪ET0‬‬


‫‪o‬‬

‫ﺗﻮﺍﻧﺎﺳﺎﺯ ﻭﻗﻔﻪ ﺧﺎﺭﺟﻲ ‪0‬‬ ‫‪A8H‬‬ ‫‪IE.0‬‬ ‫‪EX0‬‬


‫‪tr‬‬

‫ﺧﻮﺍﻧﺪﻥ ﺩﺍﺩﻩ ﺍﺯ ﺣﺎﻓﻈﺔ ﺧﺎﺭﺟﻲ‬ ‫‪B7H‬‬ ‫‪P3.7‬‬ ‫‪RD‬‬


‫‪n‬‬

‫ﻧﻮﺷﺘﻦ ﺩﺍﺩﻩ ﺩﺭ ﺣﺎﻓﻈﺔ ﺧﺎﺭﺟﻲ‬ ‫‪B6H‬‬ ‫‪P3.6‬‬ ‫‪WR‬‬


‫‪o‬‬

‫ﭘﺮﭼﻢ ﺧﺎﺭﺟﻲ ﺗﺎﻳﻤﺮ ‪ /‬ﺷﻤﺎﺭﻧﺪﻩ ‪1‬‬ ‫‪B5H‬‬ ‫‪P3.5‬‬ ‫‪T1‬‬


‫‪.C‬‬

‫ﭘﺮﭼﻢ ﺧﺎﺭﺟﻲ ﺗﺎﻳﻤﺮ ‪ /‬ﺷﻤﺎﺭﻧﺪﻩ ‪0‬‬ ‫‪B4H‬‬ ‫‪P3.4‬‬ ‫‪T0‬‬


‫‪w‬‬

‫ﭘﺎﻳﻪ ﻭﺭﻭﺩﻱ ﻭﻗﻔﻪ ‪1‬‬ ‫‪B3H‬‬ ‫‪P3.3‬‬ ‫‪INT1‬‬

‫ﭘﺎﻳﺔ ﻭﺭﻭﺩﻱ ﻭﻗﻔﻪ ‪0‬‬ ‫‪B2H‬‬ ‫‪P3.2‬‬ ‫‪INT0‬‬


‫‪w‬‬

‫ﭘﺎﻳﻪ ﺍﺭﺳﺎﻝ ﺩﺭﮔﺎﻩ ﺳﺮﻳﺎﻝ‬ ‫‪B1H‬‬ ‫‪P3.1‬‬ ‫‪TXD‬‬


‫‪w‬‬

‫ﭘﺎﻳﺔ ﺩﺭﻳﺎﻓﺖ ﺩﺭﮔﺎﻩ ﺳﺮﻳﻊ‬ ‫‪B0H‬‬ ‫‪P3.0‬‬ ‫‪RXD‬‬

‫ﺣﻖﺗﻘﺪﻡ ﻭﻗﻔﻪ ﺩﺭﮔﺎﻩ ﺳﺮﻳﺎﻝ‬ ‫‪BCH‬‬ ‫‪IP.4‬‬ ‫‪PS‬‬

‫ﺣﻖﺗﻘﺪﻡ ﻭﻗﻔﻪ ﺗﺎﻳﻤﺮ‪١‬‬ ‫‪BBH‬‬ ‫‪IP.3‬‬ ‫‪PT1‬‬

‫ﺣﻖﺗﻘﺪﻡ ﻭﻗﻔﻪ ﺧﺎﺭﺟﻲ‪١‬‬ ‫‪BAH‬‬ ‫‪IP.2‬‬ ‫‪PX1‬‬


‫ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش‬
‫اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ‬
‫ﻃﺮاﺣﯽ‪ ،‬ﺗﻮﻟﯿﺪ‪ ،‬اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ‬
‫آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ‬

‫ﺣﻖ ﺗﻘﺪﻭﻡ ﻭﻗﻔﻪ ﺗﺎﻳﻤﺮ ‪0‬‬ ‫‪B9H‬‬ ‫‪IP.1‬‬ ‫‪PT0‬‬

‫ﺣﻖﺗﻘﺪﻡ ﻭﻗﻔﻪ ﺧﺎﺭﺟﻲ ‪0‬‬ ‫‪B8H‬‬ ‫‪IP.0‬‬ ‫‪PX0‬‬

‫‪r‬‬
‫‪.i‬‬
‫‪s‬‬
‫‪r‬‬
‫‪e‬‬
‫‪k‬‬
‫‪a‬‬
‫‪lM‬‬
‫‪o‬‬
‫‪tr‬‬
‫‪n‬‬
‫‪o‬‬
‫‪.C‬‬
‫‪w‬‬
‫‪w‬‬
‫‪w‬‬
‫ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش‬
‫اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ‬
‫ﻃﺮاﺣﯽ‪ ،‬ﺗﻮﻟﯿﺪ‪ ،‬اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ‬
‫آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ‬

‫‪r‬‬
‫‪.i‬‬
‫‪s‬‬
‫‪r‬‬
‫‪e‬‬
‫‪k‬‬
‫‪a‬‬
‫‪lM‬‬
‫‪o‬‬
‫‪tr‬‬
‫‪n‬‬
‫‪o‬‬
‫‪.C‬‬
‫‪w‬‬
‫‪w‬‬
‫‪w‬‬
‫ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش‬
‫اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ‬
‫ﻃﺮاﺣﯽ‪ ،‬ﺗﻮﻟﯿﺪ‪ ،‬اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ‬
‫آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ‬

‫ﻧﻤﺎﻳﻲ ﺍﺯ ﭘﺎﻳﻪﻫﺎﻱ ﻣﻴﻜﺮﻭﻛﻨﺘﺮﻟﺮ ‪89C51‬‬

‫‪r‬‬
‫‪.i‬‬
‫‪s‬‬
‫‪r‬‬
‫‪e‬‬
‫‪k‬‬
‫‪a‬‬
‫‪lM‬‬
‫‪o‬‬
‫‪tr‬‬
‫‪n‬‬
‫‪o‬‬
‫‪.C‬‬
‫‪w‬‬
‫‪w‬‬
‫‪w‬‬

You might also like