¡¡
±¾ÎĹØÓÚÖ¸ÁîµÄ×¢Êͽ«ÓëÇ°ÊöÖ¸ÁîÖеÄÂÔÓв»Í¬¡£Ç°ÊöÖ¸Áî×¢ÊÍʱÊǶÔÖ¸Áî¾ßÌåÍê³ÉµÄ¹¦ÄܸøÒÔ˵Ã÷£¬ÕâÖÖ×¢ÊÍ·½·¨¶Ô³õѧÕßȷʵÒ×ÓÚ½ÓÊܺÍÀí½â£¬µ«ÊÇʵ¼ÊÓ¦ÓÃÖеÄPIC²úÆ·»ã±àÓïÑÔµÄ×¢ÊÍͨ³£ÊÇÒÔ³ÌÐòÒª×öʲô(»òÖ¸ÁîµÄ×÷ÓÃ)¶ø²»ÊÇ˵ָÁîµÄÖ±½Ó¹¦ÄÜ¡£¼øÓÚÉÏÊöÔÒò£¬ÏÂÊöµÄÖ¸Áî×¢Êͽ«¸Ä±ä¹ýÈ¥µÄ×¢ÊÍ·½·¨£¬ÓóÌÐòÓ¦ÆðµÄ×÷ÓÃ×÷×¢ÊÍ¡£
¡¡¡¡10ª±¼Ä³ÌÆ÷°ë×Ö½Ú½»»»Ö¸Áî
¡¡¡¡Ö¸Áî¸ñʽ£ºSWAPF¡¡f£¬d
¡¡¡¡ËµÃ÷£ºSWAPFÊÇSwap fµÄºÏд¡£·ûºÅf¡¢dµÄÒâÒåÓëÇ°ÊöµÄÏàͬ¡£¸ÃÌõÖ¸ÁîµÄ¹¦ÄÜÊǼĴæÆ÷fµÄ¸ß4λÓëµÍ4λ½»»»£¬¼´Ö¸ÁîÖ´ÐÐÇ°£¬Èô¼Ä´æÆ÷fµÄ8λ״̬ΪD7¡¢D6¡¢D5¡¢D4¡¢D3¡¢D2¡¢D1¡¢D0£¬Ö´ÐкóµÄ8λ״̬±äΪD3¡¢D2¡¢D1¡¢D0¡¢D7¡¢D6¡¢D5¡¢D4£¬Æä½á¹û´æÈëW(d=0)»òf(d=1)ÖС£
¡¡¡¡ÊµÀý£ºÖжÏÏÖ³¡±£»¤ÊÇÖжϼ¼ÊõÖÐÖØÒª²¿·Ö¡£ÓÉÓÚPIC16C¡Á¡ÁÖ¸ÁîϵͳÖÐûÓнøÕ»PUSHºÍ³öÕ»POPÖ¸ÁËùÒÔÖ»ÄÜÓÃÆäËüÖ¸ÁîÀ´ÊµÏÖ¡£ÒòΪÔÚÖ÷³ÌÐòÖг£³£Óõ½¹¤×÷¼Ä´æÆ÷WºÍ״̬¼Ä´æÆ÷STATUS£¬ËùÒÔÖжÏÏÖ³¡±£»¤³£Òª±£»¤¼Ä´æÆ÷WºÍSTATUS¡£
¡¡¡¡ÏÂÃæÊǶÔPIC16C7¡ÁϵÁÐоƬÖжÏÏÖ³¡±£»¤µÄʵÀý³ÌÐò¡£
MOVWF W_TEMP ¡¡ £»½«WÄÚÈÝ´æÈëµ½ÁÙʱ¼Ä´æÆ÷
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ W_TEMPÖÐ
SWAPF STATUS£¬W¡¡ £»½»»»STATUSÓëWÄÚÈÝ
MOVWF STATUS_TEMP £»½«STATUSµÄÄÚÈÝ´æÈëµ½ÁÙ
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ ʱ¼Ä´æÆ÷STATUS_TEMPÖÐ
ÖжϷþÎñ³ÌÐò
¡
SWAPF STATUS_TEMP£¬W£»½»»»STATUS_TEMPÓëW
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ µÄÄÚÈÝ
MOVWF STATUS¡¡¡¡¡¡ £»STATUS¸´Ô³ÉÔÀ´µÄ״̬
SWAPF W_TEMP£¬F¡¡¡¡ £»½»»»ÄÚÈÝ
SWAPF W_TEMP£¬W¡¡¡¡£»W¸´Ô³ÉÔÀ´µÄ״̬
¡¡¡¡ËµÃ÷£ºÉÏÊö³ÌÐòÖи÷ÌõÖ¸ÁîµÄ×¢ÊÍ»ù±¾É϶¼ÊÇÒÔ³ÌÐòÓ¦´ïµ½µÄÄ¿µÄ¶ø×¢Ê͵ģ¬¶ÔÿÌõÖ¸ÁîµÄ¹¦Äܼ¸ºõδÉæ¼°¡£ÕâÊdzõѧÕßÓ¦Ìرð×¢ÒâµÄ¡£
¡¡¡¡11ª±×Ó³ÌÐòµ÷ÓÃÖ¸Áî(Subroutine Call)
¡¡¡¡Ö¸Áî¸ñʽ£ºCALL k£»kΪÁ¢¼´µØÖ·
¡¡¡¡ËµÃ÷£º×Ó³ÌÐòµ÷Ó㬲»Í¬ÐͺÅоƬµÄʵÏÖ·½·¨²»¾¡Ïàͬ£¬Æ乲ͬµãÊÇÊ×ÏȽ«·µ»ØµØÖ·((PC)£«1)ѹջ±£»¤£¬ÔÙתÈëËùµ÷ÓõÄ×Ó³ÌÐòÈë¿ÚµØÖ·Ö´ÐÐ(ÓëMCS£51Ö¸ÁÄÜÏàËÆ)¡£
Ö¸Áî¸ñʽģʽ£ºHERE CALL DELAY£»µ÷ÓÃÑÓʱ×Ó³ÌÐò
¡¡¡¡¡¡¡¡¡¡¡¡¡¡ ¡
¡¡¡¡¡¡¡¡¡¡¡¡ DELAY MOVLW 0x80¡¡£»ÑÓʱ×Ó³ÌÐò
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ RETLW 0
¡¡¡¡ËµÃ÷£ºµ÷ÓÃÖ¸ÁîÖ´ÐÐÇ°£¬PC=µØÖ·HERE
¡¡¡¡µ÷ÓÃÖ¸ÁîÖ´Ðкó£¬PC=µØÖ·DELAY(±êºÅ)£¬¶ÑÕ»Ö¸ÕëTOS=HERE£«1(·µ»ØµØÖ·)¡£
¡¡¡¡ÊµÀý£º¼ûÏÂÌõÖ¸ÁîµÄʵÀý
¡¡¡¡12ª±¼Ä´æÆ÷ÄÚÈÝÈ¡·´Ö¸Áî
¡¡¡¡Ö¸Áî¸ñʽ£ºCOMF¡¡f£¬d
¡¡¡¡ËµÃ÷£ºCOMFÊÇComplement fµÄËõд¡£ÆäÖÐd=1ʱ£¬²Ù×÷(f)¡úf£»d=0ʱ£¬²Ù×÷(f)¡úw¡£
¡¡¡¡¹¦ÄÜ£º¼Ä´æÆ÷fÄÚÈÝÈ¡·´ºóËÍÈëW(d=0)»òf×ÔÉí(d=1)¡£
¡¡¡¡ÊµÀý£º¡¡ ORG ¡¡ 0x1FF
¡¡¡¡¡¡¡¡¡¡¡¡ GOTO MAIN
¡¡¡¡¡¡¡¡¡¡¡¡ ORG ¡¡ 0
¡¡¡¡ DELAY ¡
¡¡¡¡ MAIN MOVLW 0 £»Ö÷³ÌÐò¿ªÊ¼
¡¡¡¡ ¡¡¡¡¡¡ TRTS 5 £»ÉèÖÃRA¿ÚΪÊä³ö
¡¡¡¡¡¡ BCF 5£¬0¡¡
£»ÖÃRA¿Ú0λΪ0
¡¡¡¡ LOOP ¡¡ CALL DELAY£»ÉÁ¶¯ÑÓʱ
¡¡¡¡¡¡¡¡¡¡¡¡ COMF 5ª± £»RA¿ÚÇó·´(ÁÁ¡ªÃð¡ª
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ ÁÁ¡¡¿ØÖÆ)
¡¡¡¡¡¡¡¡¡¡¡¡ GOTO LOOP £»Ñ»·
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
¡¡¡¡ËµÃ÷£ºÉÏÊöÖ¸ÁîÊÇÒ»ÖÖPIC16C54 LED·¢¹â¿ØÖÆʵÑ鲿·Ö³ÌÐò¡£ÆäÖÐÑÓʱ×Ó³ÌÐòDELYδÁгö£¬µ«²»Ó°Ïì±¾ÌõÖ¸ÁîµÄʶ¶Á¡£³ÌÐòÖеÄÖ÷³ÌÐò¿ªÊ¼µÄÈýÌõÖ¸Á¾ùÒѽéÉܹý£¬½ô¸ú×ŵÄCALLÖ¸ÁîÊǵ÷ÓÃÖ´ÐÐ×Ó³ÌÐò£¬ÆäÈë¿ÚµØַΪ±êºÅDELAY¡£×Ó³ÌÐòÖ´ÐнáÊøºó£¬ÓÖÖ´ÐÐCOMF
5µÄLED·¢¹âÁÁ¡ªÃð¡ÁÁ¡ªÃð¡¡¿ØÖÆÖ¸Áî¡£ºóÃæÒ»ÌõGOTO LOOPÖ¸ÁîÊÇ´ïµ½LEDÑ»·µãÁÁÄ¿µÄ¡£
¡¡¡¡13ª±ÃæÏòλµÄ²Ù×÷Ö¸Áî(¹²4Ìõ£¬PIC¸ß¼¶²úÆ·¶àÔöÒ»Ìõ)
¡¡¡¡¸ÃÀàÖ¸Áî³ýÒ»ÌõλÇåÁãÍ⣬ÁíÓÐÒ»Ìõ¼Ä´æÆ÷fλbµÄÖÃ1Ö¸ÁîºÍÁíÍâÁ½ÌõλÌø²½Ö¸Áî(PIC¸ß¼¶²úÆ·¶àÔöÒ»ÌõfµÄbλ´¥·¢×ª»»Ö¸Áî)¡£
¡¡¡¡(1)λÖÃ1Ö¸Áî¡£Ö¸Áî¸ñʽ BSF¡¡f£¬b
¡¡¡¡ËµÃ÷£ºBSFÊÇBit Set fµÄËõд¡£FºÍbµÄÒâÒåÓëÇ°ÊöÏàͬ£¬¸ÃÌõÖ¸ÁîµÄ¹¦ÄÜÊǽ«¼Ä´æÆ÷fµÄbλÖÃ1¡£
¡¡¡¡(2)λ²âÊÔ¡¢ÎªÁã¼äÌøÖ¸Áî¡£Ö¸Áî¸ñʽ BTFSC f£¬b
¡¡¡¡ËµÃ÷£ºBTFSCÊÇBit Test£¬Skip if ClearµÄËõд¡£Ö¸ÁÄÜÊDzâÊԼĴæÆ÷fλ¡°b¡±£¬ÈçΪ0£¬Ìø¹ýÏÂÒ»ÌõÖ¸ÁΪ1˳ÐòÖ´ÐУ¬¼´µ±f(b)=0ʱ£¬¾Í²»Ö´Ðе±Ç°Ö¸Áî¶øÖ´ÐÐÏÂÒ»ÌõÖ¸Áî(¼äÌø)£¬¼´ÓÃÒ»Ìõ¿ÕÖ¸ÁîNOP´úÌæËü£¬ËùÒÔ¸ÃÌõÖ¸ÁîÕ¼ÓÃ2¸öÖ¸ÁîÖÜÆÚ¡£
¡¡¡¡(3)λ²âÊÔ¡¢Îª1¼äÌøÖ¸Áî¡£Ö¸Áî¸ñʽ BTFSS¡¡f£¬b
¡¡¡¡ËµÃ÷£ºBTFSSÊÇBit Test£¬Skip if SetµÄËõд¡£ÆäÖ¸ÁîµÄÂß¼¹¦ÄÜÓëÉÏÌõÏà·´£¬Î»²âÊÔf(b)=1¾Í¼äÌøÖ´ÐУ¬f(b)=0˳ÐòÖ´ÐС£
¡¡¡¡ÉÏÃæ½éÉܵÄPIC 8λµ¥Æ¬»ú»ã±àÓïÑÔÖ¸Áî½öÊDz¿·ÖÖ¸Á´ËÍ⻹ÓÐÑ»·×ó¡¢ÓÒÒÆÖ¸ÁWºÍ¼Ä´æÆ÷fÏà¡°¼Ó¡±¡¢Ïà¡°Ó롱ָÁîºÍ½øÈë˯Ãß·½Ê½µÈÖ¸Áî¡£¼øÓÚ±¨Ö½°æÃæµÄÏÞÖÆ£¬²»ÔÚÕâÀïÒ»Ò»½éÉÜ£¬½ñºó½«ÔÚ³ÌÐòµÄÓ¦ÓÃÊÔÑéÖÐÔÙ×÷²¹³ä˵Ã÷¡£¡¡¡¡«ù³É¶¼¡¡Ê·Îª¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ ֪ʶ¾ºÈüÊÔÌ⣺
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡13ª±Çë°ÑÏÂÁгÌÐò¼Ó×¢ÊÍ£¬³ÌÐòÖеġ°5¡±´ú±íRA(F5)¿Ú£»¡°6¡±´ú±íRB(F6)¿Ú¡£
¡¡¡¡CLRW ¡¡¡¡£»MOVLW OFFH
¡¡¡¡TRIS 5 ¡¡ TRIS¡¡ 6
¡¡¡¡BCF 5£¬1 ¡¡ ¡¡BCF¡¡ 5ª±0
¡¡¡¡BSF 5£¬0¡¡¡¡¡¡ ¡¡¡¡¡ÓÒÅŽÓ×ó¡¡¡¡¡¡¡¡¡¡
¡¡