SOGO論壇

標題: 8051進位旗標程式問題(急) 拜託 [列印本頁]

作者: 奇幻人    時間: 2011-6-13 21:42:02     標題: 8051進位旗標程式問題(急) 拜託

為甚麼如果只是單純0~99循環,就不用加另PSW.7   PSW.6為0,而這個0~60循環程式就要?
MAIN:    MOV     TMOD,#00000001B
            MOV      TH0,#01100011B
            MOV      TL0,#11000000B
            MOV       IE,#10000010B
            MOV      A,#0              
            DA         A                     
            MOV     P2,A
            MOV     R0,#25
            SETB   TCON.4
LOOP:    AJMP   LOOP        
                                                   

TIMER0: MOV     TH0,#01100011B   
            MOV     TL0,#11000000B
            SETB   TCON.4
            DJNZ    R0,CONT
            INC       A                              
            CJNE   A,#5AH,CONT1                                                   >>0~99無這行
                    MOV     A,#0                                                                >>0~99無這行
CONT1:  CLR      PSW.6                   >知道是另進位旗標為0,但在這個程式裡的作用在哪       >>0~99無這行
                    CLR     PSW.7                     >作用在哪,同上                                 >>0~99無這行
                    DA       A                                                         
            MOV    P2,A
            MOV   R0,#25
CONT:  RETI

謝謝
作者: ws110402    時間: 2011-6-15 00:35:12

請問您確定是0-60循環計數嗎?  看起來比較像是0-90的耶
作者: Jackchen00    時間: 2011-6-15 09:21:26

大大
關鍵就是在 DA A這個指令
因為0~99循環時
99+1=9Ah
經過DA A轉換以後A的值變成00,Carry=1
所以沒有必要將A歸零
如果是0~59
當計數到59的下一次A的值是5Ah
經過DA A轉換以後A的值變成60而不是00
所以要讓他歸零就必須加上
  CJNE  A,#5AH,CONT1
  MOV   A,#0
去比較A的值如果=5Ah時就要將A歸零
至於
CONT1:  CLR      PSW.6                  
                    CLR     PSW.7                     
                    DA       A
我認為是有錯誤的
應該改成
                     CLR      PSW.6                  
              CLR     PSW.7                     
CONT1:        DA       A
因為當計數到5A將A歸零後才有必要去清除C和AC
如果不清除C和AC只將A歸零的話
則DA A以後A的值會變成06
至於為什麼請自行研究DA A這個指令的用法

或是你也可以這樣寫
            INC       A   
                    DA       A
            CJNE  A,#60H,CONT1
            MOV   A,#0
CONT1:  MOV    P2,A
            MOV   R0,#25
CONT:   RETI


先轉換以後再做比較

《 本帖最後由 Jackchen00 於 2011-6-15 10:04 編輯 》
作者: Jackchen00    時間: 2011-6-21 20:58:03

這位開版大大
我實在不知你的急是急在哪裡
如果真的急的話
早該看了也早該給個回應了
至今給你解答都一星期了
到底對你有沒幫助
連回應一下或說個謝字也有那麼難嗎?
那以後這裡還有誰願意去幫人解答呢?
作者: 奇幻人    時間: 2011-6-30 17:09:04     標題: 回覆 #4 Jackchen00 的帖子

抱歉,忘了回覆了,謝謝你的說明,看完你的說明我大概懂了




歡迎光臨 SOGO論壇 (https://oursogo.com/) Powered by OURSOGO.COM