Thông báo

Collapse
No announcement yet.

help code asm 8951

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • #31
    bạn giải thích cho mình tại sao lại là "$+3" được không?
    tại sao bạn không dùng nhãn cụ thể mà lại ghi là "$+3", bạn có chắc chắn là nó nhảy đến chỗ mong muốn!

    Comment


    • #32
      $+3 là thực thi lệnh kế tiếp. cái này là mình muốn so sánh nhỏ hơn hay lớn hơn vì lệnh cjne liên quan đến cờ c để so sánh giá trị lớn hay nhỏ nên mình mới dùng
      |

      Comment


      • #33
        mình nghĩ bạn nên viết lại đoạn so sánh đi:
        -với CJNE thì khi hai giá trị so sánh khác nhau thì nhảy đến nhãn, nếu hai giá trị bằng nhau thì sẽ thực hiện lệnh kế tiếp. ( nếu trong c.trình của bạn $+3 là lệnh kế tiếp, thì nếu a và temp bằng nhau nó cũng thực hiện lệnh kế tiếp, chứ không phải khác nhau mới thực hiện lệnh sau CJNE)
        -đoạn nào là chương trình còn thì mới dùng RET
        -với lệnh nhảy JMP (hay LJMP) thì chỉ nạp giá trị PC để nhảy tới vị trị mong muồn thôi, không phải PUSH địa chỉ lệnh tiếp theo vào Satck nên dùng RET khi nhảy tới một đoạn chương trình sẽ nạp lại giá trị không phải là giá trị của lệnh tiếp theo trước khi nhảy của PC. nên sẽ Return về chỗ không mong muốn.

        Comment


        • #34
          Code:
              clr     c
              mov a,50h
              cjne    a,temp,$+3
              call        nhay1
              clr        c
              mov a,51h
              cjne    a,temp,$+3
              call     nhay2
              clr     c
          .................
          nhay1:jc    relay
          clr p0.0
          ret
          relay:
          setb p0.0
          ret
          nhay2:jnc    alarm
          clr p0.1
          ret
          alarm:
          setb p0.1
          ret
          mình viết sai 2 lệnh này nên nó mới hok thực hiện lệnh giờ thì nó ok rồi nhưng có 1 điều là nó nhảy loạn cả lên nhờ bác giúp với.
          Last edited by ozonedark2; 10-07-2012, 13:32.
          |

          Comment


          • #35
            Nguyên văn bởi ozonedark2 Xem bài viết
            Code:
                clr     c
                mov a,50h
                cjne    a,temp,$+3
                call        nhay1
                clr        c
                mov a,51h
                cjne    a,temp,$+3
                call     nhay2
                clr     c
            .................
            nhay1:jc    relay
            clr p0.0
            ret
            relay:
            setb p0.0
            ret
            nhay2:jnc    alarm
            clr p0.1
            ret
            alarm:
            setb p0.1
            ret
            mình viết sai 2 lệnh này nên nó mới hok thực hiện lệnh giờ thì nó ok rồi nhưng có 1 điều là nó nhảy loạn cả lên nhờ bác giúp với.
            Bạn đã sửa rồi thì sữa cho chót đi:
            - muốn nó nhảy đến đâu thì ghi rõ ra
            - với logic thì chỉ có hoặc là 1 hoặc là 0 thôi, nên mấy cái lệnh so sánh bạn không cần phải viết kiểu thế này cho rườm rà ra:
            Code:
            jb mode,nhietdo_dat2
            call delayled
            jnb mode,thoat
            thoat:
            ret
            nếu như mod=1 thì nhảy tới nhiệt độ đặt 2, còn bằng 0 thì thoát, không cần phải kiểm tra jnb mode,thoat nữa ( giả sử đến đoạn jb mode,nhietdo_dat2 mode nó là 0, thì đến đoạn tiếp theo, mode có bằng 1 nó cũng thoát chứ không phải là phải chờ bằng không đâu-jnb mode,thoat)
            - tiếp là mình đã nói với bạn rồi, khi nào mà bạn CALL thì mới RET
            chứ như trên của bạn:
            Code:
            .................
            nhay1:jc    relay
            clr p0.0
            ret
            relay:
            setb p0.0
            ret
            nhay2:jnc    alarm
            clr p0.1
            ret
            alarm:
            setb p0.1
            ret
            bạn nhảy tới, thế RET về đâu đây? có phải CALL đâu mà nó cất giá trị PC vào STACK để mà gọi lại.

            Comment


            • #36
              Nguyên văn bởi hoadang Xem bài viết
              Bạn đã sửa rồi thì sữa cho chót đi:
              - muốn nó nhảy đến đâu thì ghi rõ ra
              - với logic thì chỉ có hoặc là 1 hoặc là 0 thôi, nên mấy cái lệnh so sánh bạn không cần phải viết kiểu thế này cho rườm rà ra:
              Code:
              jb mode,nhietdo_dat2
              call delayled
              jnb mode,thoat
              thoat:
              ret
              nếu như mod=1 thì nhảy tới nhiệt độ đặt 2, còn bằng 0 thì thoát, không cần phải kiểm tra jnb mode,thoat nữa ( giả sử đến đoạn jb mode,nhietdo_dat2 mode nó là 0, thì đến đoạn tiếp theo, mode có bằng 1 nó cũng thoát chứ không phải là phải chờ bằng không đâu-jnb mode,thoat)
              - tiếp là mình đã nói với bạn rồi, khi nào mà bạn CALL thì mới RET
              chứ như trên của bạn:
              Code:
              .................
              nhay1:jc    relay
              clr p0.0
              ret
              relay:
              setb p0.0
              ret
              nhay2:jnc    alarm
              clr p0.1
              ret
              alarm:
              setb p0.1
              ret
              bạn nhảy tới, thế RET về đâu đây? có phải CALL đâu mà nó cất giá trị PC vào STACK để mà gọi lại.
              cái lệnh cjne a,temp,$+3 như mình nói ở trên $+3 là thực hiện lệnh kế ( bất kể nó có bằng hay không thì vẫn thực hiện lệnh kế ) tức là thực hiện lệnh call nhay1 ( ở đây mình sẽ kiểm tra cờ c nếu a lớn hơn hay bằng temp thì c = 0 còn nhỏ hơn thì c = 1 ) mình nghĩ là nó sẽ ret về sau lệnh call nhay1 để thực hiện tiếp chương trình nếu mình nói có gì sai xin bạn sửa dùm vì mình còn gà lắm
              bên dưới là chương trình mình đã sửa bác thử đặt nhiệt độ thấp rồi đặt nhiệt độ cao rồi chỉnh nhiệt độ thực thấp hơn nhiệt độ đặt thấp rồi chỉnh lại cho nhiệt độ thực cao hơn nhiệt độ đặt thấp xem thay đổi của nó đi, nó nhảy loạn cả lên luôn
              Attached Files
              Last edited by ozonedark2; 10-07-2012, 19:07.
              |

              Comment


              • #37
                Code:
                HIENTHI:
                	CALL	HIEU_CHINH
                	CALL	KIEMTRA
                	CALL	OUTLED
                RET
                sosanh:
                	clr 	c
                	mov a,50h
                	cjne	a,temp,nhay1
                	clr		c
                	mov a,51h
                	cjne	a,temp,nhay2
                	clr 	c
                	ret
                nhay1:jc	relay
                setb p0.0
                call delay1s
                ret
                relay:
                clr p0.0
                ret
                nhay2:jnc	alarm
                clr p0.1
                call delay1s
                ret
                alarm:
                setb p0.1
                ret
                Đây là đoạn chương trình mới của bạn,( đoạn chương trình so sánh). Thì như mình đã nói, nhưng bạn sửa lại thì chưa sửa hết:
                -khi gọi hàm con call sosanh thì thực hiện các lệnh bắt đầu từ nhãn sosanh: và cho tới khi đến lệnh CJNE đầu tiên thì như sau:
                - Nếu a=temp thì sẽ thực hiện tiếp lệnh sau CJNE A,TEMP,NHAY1
                - Nếu khác thì nhảy tới nhay1: và thực hiện các lệnh bắt đầu từ đây, nhưng sau khi thực hiện xong, bạn lại dùng ret, như vậy chương trình sẽ nhảy về thực hiện tiếp lệnh sau lệnh call sosanh mà không phải nhảy về thực hiện tiếp lệnh sau CJNE A,TEMP,NHAY1 là lệnh clr c
                - tương tự cho lệnh CJNE sau, khi thực hiện lệnh RET thì giá trị của PC sẽ được nạp bằng giá trị cất trong Stack trước đó, đó là lý do tại sao khi thực hiện xong lệnh trong đoạn nhay1: thì quay về chương trình chính luôn mà không thực hiện tiếp các lệnh trong đoạn sosanh:

                Comment


                • #38
                  bác nói rất đúng
                  em đã sửa lại rồi bây giờ thì ok không chỗ chê nhưng led hơi nháy (chắc phải sửa delay lại tí là được ) típ sau chắc em sẽ nâng cấp nó lên dùng thêm rom 24c02 để lưu giá trị đặt nhân đây cho em hỏi không biết protues có mô phỏng được con rom này không
                  Last edited by ozonedark2; 11-07-2012, 08:34.
                  |

                  Comment


                  • #39
                    nãy giờ mới để ý cái log mô phỏng bác xem thử xem nó cảnh báo vậy có ảnh hưởng tới mạch thực không
                    Attached Files
                    |

                    Comment


                    • #40
                      Nguyên văn bởi ozonedark2 Xem bài viết
                      nãy giờ mới để ý cái log mô phỏng bác xem thử xem nó cảnh báo vậy có ảnh hưởng tới mạch thực không
                      Cái này mình cũng không biết, chưa gặp bao giờ. thử hỏi cao thủ nào xem, không thì làm thật mới biết thế nào thôi.

                      Comment


                      • #41
                        Chào A ozonedark2. E thấy đề tài of A đang viết rất hay. A có thể chia sẻ trương chình of A cho e và mọi người biết để tham khảo thêm được không ạ.

                        Comment


                        • #42
                          Nguyên văn bởi ozonedark2 Xem bài viết
                          nãy giờ mới để ý cái log mô phỏng bác xem thử xem nó cảnh báo vậy có ảnh hưởng tới mạch thực không
                          a ơi, chương trình a post, phần đọc nhiệt độ đã chuẩn chưa ạ?
                          sao e ko mô phỏng đc nhỉ.hjc

                          Comment


                          • #43
                            Nguyên văn bởi ozonedark2 Xem bài viết
                            cái lệnh cjne a,temp,$+3 như mình nói ở trên $+3 là thực hiện lệnh kế ( bất kể nó có bằng hay không thì vẫn thực hiện lệnh kế ) tức là thực hiện lệnh call nhay1 ( ở đây mình sẽ kiểm tra cờ c nếu a lớn hơn hay bằng temp thì c = 0 còn nhỏ hơn thì c = 1 ) mình nghĩ là nó sẽ ret về sau lệnh call nhay1 để thực hiện tiếp chương trình nếu mình nói có gì sai xin bạn sửa dùm vì mình còn gà lắm
                            bên dưới là chương trình mình đã sửa bác thử đặt nhiệt độ thấp rồi đặt nhiệt độ cao rồi chỉnh nhiệt độ thực thấp hơn nhiệt độ đặt thấp rồi chỉnh lại cho nhiệt độ thực cao hơn nhiệt độ đặt thấp xem thay đổi của nó đi, nó nhảy loạn cả lên luôn
                            a ơi, trong chương trình có đoạn :

                            KIEMTRA: ;hieu chinh gia tri cua nhiet do (-)
                            JNB 6,OUT_KT
                            số 6 ở đây là j vậy ạ? a giải thích rõ giúp e nhé

                            Comment

                            Về tác giả

                            Collapse

                            ozonedark2 Tìm hiểu thêm về ozonedark2

                            Bài viết mới nhất

                            Collapse

                            • tuyennhan
                              Trả lời cho Tiếng Anh cho người Việt
                              bởi tuyennhan
                              Cái thư sai ngay câu chào Dear sir mới đúng Hi chỉ dùng cho người quen , các vấn đề về kỹ thuật nó không trả lời hoặc nói loanh quanh tránh ảnh hưởng đến công ty .
                              Giup1 người cần không giúp người không cần với lại văn mình vợ người nha đừng quên .
                              hôm nay, 07:44
                            • vi van pham
                              Trả lời cho Tiếng Anh cho người Việt
                              bởi vi van pham
                              Cám ơn những lời chúc tốt đẹp của em.

                              Việc em làm giống như chê sếp dốt, chẳng những không có miếng xôi nào để ăn mà còn chịu nhiều trù dập lên bờ , xuống ruộng.

                              Hãy tránh vết xe đổ của tui đi. Dành thời gian lo cho gia đình....
                              hôm nay, 02:00
                            • nhathung1101
                              Trả lời cho Tiếng Anh cho người Việt
                              bởi nhathung1101
                              Ngoại ngữ là không thể thiếu, nhất là làm việc với công nghệ.

                              Nhưng học để tán gái hay để đọc datasheet, manual là chuyện cần quan tâm.

                              Và đọc ở nguồn nào đáng tin cậy, chứ cứ lên tictok hay facebook học lỏm thì...
                              Hôm qua, 22:18
                            • dinhthuong80
                              Trả lời cho Tiếng Anh cho người Việt
                              bởi dinhthuong80
                              Bác nói rất khách quan và chính xác. Ngoại ngữ là chìa khóa thăng tiến dù làm gì. Chả thế mà nay nước mình dạy tiếng Anh từ tiểu học.

                              Nhớ hồi năm 2006 em ra Hải Phòng, Hải Dương tìm việc, thời đó ở Bình Dương lương công...
                              Hôm qua, 14:51
                            • dinhthuong80
                              Trả lời cho Tiếng Anh cho người Việt
                              bởi dinhthuong80
                              Cảm ơn bạn, ĐT cũng có ý nghĩ như vậy.

                              Thực ra, lỗi của hãng đó ( gọi là hãng vì không chỉ một model sản phẩm) là về phần cứng, ĐT tuy không biết về lập trình phần mềm nhưng cũng thấy rằng sẽ chẳng khó khăn gì đáng...
                              Hôm qua, 14:39
                            • dinhthuong80
                              Trả lời cho Tiếng Anh cho người Việt
                              bởi dinhthuong80
                              Dạ, bác bảy mấy tuổi đời rồi cũng không kém bố cháu bao nhiêu. Tuổi nghề thì bác cũng đáng tuổi cha chú.

                              Nhưng 2 điều trên thì chưa hẳn đã đáng quí và đáng tôn trọng bằng việc bác rất nhiệt tình chia sẻ kinh nghiệm chuyên...
                              Hôm qua, 14:28
                            • bqviet
                              Trả lời cho Tiếng Anh cho người Việt
                              bởi bqviet
                              Đúng, nếu chú tâm thì chỉ cần mỗi tiếng Việt là đã khá đủ để làm đa số công việc thông thường, ở thời đại ngày nay khi tài liệu sách vở phương tiện thông tin liên lạc đã nhiều. Nhưng cũng chính ở thời nay giao lưu các nước nhiều...
                              21-02-2025, 20:26
                            • mèomướp
                              Trả lời cho Tiếng Anh cho người Việt
                              bởi mèomướp
                              Dạ cháu nghĩ chú dinh... cứ mạnh dạn gửi thư đi ạ, chú có thể gửi bằng văn bản in chuyển phát nhanh sẽ có giá trị hơn. Vấn đề chưa hẳn là cần hãng làm gì đó, mà chỉ đơn giản là mình cảm thấy nhẹ lòng vì đã làm những việc bản...
                              21-02-2025, 12:32
                            • vi van pham
                              Trả lời cho Tiếng Anh cho người Việt
                              bởi vi van pham
                              Những lần hắt hơi sổ mũi làm tôi mệt lã, phải dùng rượu uống để ngũ. Tôi cũng đang uống rượu 1 mình, viết vài dòng này cho em ( có lẽ dt chỉ bằng tuổi em tôi).

                              Dinh thuong dang đi vào vết xe đổ của tôi. Càng chứng minh, có...
                              20-02-2025, 21:31
                            • bqviet
                              Trả lời cho Hỏi về cách hàn linh kiện ( giúp tớ với )
                              bởi bqviet
                              Thiết nghĩ thi thoảng bác lên đây chia xẻ ít kinh nghiệm cũng vui rồi. Còn chuyện con người sinh lão bệnh tử là thường, sống cùng với quy luật đó thôi. Bqv nhớ trước đây bác từng kể về chuyện rang chì ô-xít bằng chảo để phục hồi bình điện, đấy cũng là thành quả đáng nể phục ở thời kỳ thiếu thốn đó.
                              20-02-2025, 17:22
                            Đang tải...
                            X