Thông báo

Collapse
No announcement yet.

Ai rành ASM cho hỏi code chút xíu.

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

  • Ai rành ASM cho hỏi code chút xíu.

    Mình có 2 đoạn code dùng để chạy viền mà mình đang nhức đầu về vụ này.Ai rành chĩ mình cái.
    đoan1:
    Code:
    MOV   R5,#0
    INC	R5
    	CJNE	R5,#16,SANGVIEN
    	CJNE	R5,#80,VIENCHAY
    	MOV	R5,#0
    	LJMP	SANGVIEN
    ;------------------------------------------------------
    SANGVIEN:
    	SETB	P1.1	
    	SETB	P1.0
    	LJMP	EXITISR
    ;---
    VIENCHAY:
    	INC	R4
    	CJNE	R4,#1,LOOPVIENCHAY
    	CLR	P1.1
    	SETB	P1.0	
    	LJMP	EXITISR
    LOOPVIENCHAY:
    	CJNE	R4,#2,EXITISR
    	SETB	P1.1
    	CLR	P1.0
    	MOV	R4,#0
    	LJMP	EXITISR	
    EXITISR:
    	RETI
    Theo như doạn code1 thì mạch chạy SANGVIEN 16 lần rùi chạy VIENCHAY mà mình mô phỏng thì chạy dc 16 lần SANGVIEN rồi đến lúc VIENCHAY thì nó chớp tắt 1 còn led o P1.1 rùi sáng hết lun.

    Đoạn 2:
    Code:
    MOV   R4,#0
    INC	R4
    	CJNE	R4,#16,KTVIENX
    	LJMP	SANGVIEN
    KTVIENX:
    	JC	SANGVIEN
    	CJNE	R4,#40,VIENCHAY
    	MOV	R4,#0
    	LJMP	SANGVIEN
    ;------------------------------------------------------
    SANGVIEN:
    	SETB	P1.1	
    	SETB	P1.0
    	LJMP	EXITISR
    ;---
    VIENCHAY:
    	INC	R2
    	CJNE	R2,#1,LOOPVIENCHAY
    	CLR	P1.1
    	SETB	P1.0	
    	LJMP	EXITISR
    LOOPVIENCHAY:
    	CJNE	R2,#2,EXITISR
    	SETB	P1.1
    	CLR	P1.0
    	MOV	R2,#0
    	LJMP	EXITISR	
    EXITISR:
    RETI
    Theo code doan 2 thì mạch chay on định mà mình không hieu cho lắm. Cái cau lệnh JC SANGVIEN khi mình bỏ đi thì nó không chạy sáng viền nữa. Mà mình nghĩ câu JC là nhảy khi cờ CY =1 đâu liên quan tới gì đâu.Mình chắc chắn rằng code mình không có lệnh MOV,DIV,ADD,SUB gì hết.
    Cái code này mình dùng trong chuong trình ngắt.
    Bạn nào biết chỉ mình với.Đang nhức đầu wá.Code đúng thì chạy sai còn code sai thì chay đúng.
    Last edited by shogunvn; 10-12-2010, 10:33.

  • #2
    cái đề bài như thế nào dậy, code 1 bạn để nhãn cho ngắt ở chỗ nào dậy, nếu để ngay chỗ mov r5,#0 thì làm sao được.
    Ở code 1 trong chương trình chính bạn có sử dụng R4 không? nếu có làm R4 tăng thì chắc là bị sai rùi

    Comment


    • #3
      Code:
      $MOD51
      	ORG	00H			;DIEM NHAP RESET
      	LJMP	MAIN			;NHAY QUA KHOI CAC VECTOR NGAT
      	ORG	001BH			;DIEM NHAP ISR CUA TIMER 1
      	LJMP	T1ISR			;LENH NHAY DEN ISR CUA TIMER1
      	ORG	0030H			;DIEM NHAP CUA CHUONG TRINH CHINH
      MAIN:	
      	MOV   P1,#0H
      	MOV	P2,#00H
      	MOV	P3,#00H
      	MOV	R3,#01H
      	MOV	R5,#0
      	MOV	R4,#0
      	MOV	IE,#88H		;CHO PHEP NGAT TIMER1 HOAT DONG
      	MOV	TMOD,#11H
      	MOV	TH1,#HIGH (-2000)
      	MOV	TL1,#LOW (-2000)
      	SETB	TR1			;CHO PHEP TIMER1 HOAT DONG
      START:		
      	LCALL	NHAYMUNGCHUAGIANGSINH
      	LJMP	START
      NHAYMUNGCHUAGIANGSINH:
      	MOV	R6,#3			;NHAY 3 LAN
      	CLR	P1.2
      	CLR	P1.3
      	CLR	P1.4
      	CLR	P1.5
      	CLR	P1.6
      	CLR	P1.7
      LOOPMUNGCHUAGIANGSINH:
      	MOV	P2,#0FFH		;SANG "MUNG CHUA"
      	MOV	P3,#0FFH		;SANG "GIANG SINH"
      	LCALL	DELAY2
      	MOV	P2,#00H		;TAT "MUNG CHUA"
      	MOV	P3,#00H		;TAT "GIANG SINH"
      	LCALL	DELAY2
      	DJNZ	R6,LOOPMUNGCHUAGIANGSINH	;NHAY 3 LAN
      RET
      DELAY:
      	MOV     TMOD,#11H    
      	MOV     R1,#50
      LOOPDELAY:
      	MOV     TH0,#HIGH (-1000)
      	MOV     TL0,#LOW (-1000)
      	SETB    TR0
      	JNB     TF0,$
      	CLR     TF0
      	CLR     TR0
      	DJNZ    R1,LOOPDELAY
      	RET
      ;------------------------------------------------------
      DELAY2:
      	MOV	R2,#8
      LOOPDELAY2:
      	LCALL	DELAY
      	DJNZ	R2,LOOPDELAY2
      RET
      ;------------------------------------------------------
      T1ISR:
      	CLR	TR1
      	CLR	TF1
      	INC	R3
      	MOV	TH1,#HIGH (-3000)
      	MOV	TL1,#LOW (-3000)
      	CJNE	R3,#100,EXITISR
      	MOV	R3,#0
      ;---
      	INC	R5
      	CJNE	R5,#16,KTVIENX
      	LJMP	SANGVIEN
      KTVIENX:
      	JC	SANGVIEN
      	CJNE	R5,#80,VIENCHAY
      	MOV	R5,#0
      ;------------------------------------------------------
      SANGVIEN:
      	SETB	P1.1	
      	SETB	P1.0
      	LJMP	EXITISR
      ;---
      VIENCHAY:
      	INC	R4
      	CJNE	R4,#1,LOOPVIENCHAY
      	CLR	P1.1
      	SETB	P1.0	
      	LJMP	EXITISR
      LOOPVIENCHAY:
      	CJNE	R4,#2,EXITISR
      	SETB	P1.1
      	CLR	P1.0
      	MOV	R4,#0
      	LJMP	EXITISR	
      EXITISR:
      	SETB	TR1
      	RETI
      END
      Code hoàn chỉnh lun đóa.Ai giúp mình với chứ mai là nộp rùi.

      Comment


      • #4
        Mình không hiểu lắm mạch bạn chạy như thế nào nên đọc code bị loạn xạ, nhưng mình thấy lệnh
        JC SANGVIEN
        là chịu ảnh hưởng bởi lệnh
        CJNE R5,#16,KTVIENX
        Sau lệnh này nếu R5 # 16 thì sẽ nhảy kiểm tra viền, đồng thời nếu R5 <16 thì cờ nhớ CY=1, do đó theo chương trình của bạn thì được hiểu như nếu R5 <= 16 thì nhảy đến sáng viền. không biết có đúng ko

        Comment


        • #5
          Haha.Bạn nói câu đó mình mới coi lại sách và thấy rằng lệnh CJNE có ảnh hưởng đến cờ CY.Lâu quá không ôn lại nên gà thật.Thanks bạn rất nhiều.Mà bạn cho mình hỏi đoạn code dau tiên mình thấy đúng mà sao nó chạy chuong trinh VIENCHAY dc 1 lần rùi tắt àh.

          Comment


          • #6
            chào cả nhà .
            mình đang làm đồ án về vdk 89x quảng cáo .các anh chị cho mình hỏi là mình đang định làm viền chạy kiểu sao băng 16bit (2 port)
            nhưng ko bit lập trình kiểu đó zay các anh chị pit hay chi cho e zoi lập trình asm nha
            mail: changhoangtuhaohoa@gmail.com

            Comment

            Về tác giả

            Collapse

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

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

            Collapse

            • mèomướp
              Trả lời cho Sửa bộ nguồn DC 60V 45A
              bởi mèomướp
              Dạ hông dám làm thì chắc chắn sẽ mãi ko thể làm được đâu ạ. Nguồn xung dân dụng vài kw giờ rất nhìu ạ, sạc ô tô điện, máy hàn, lò vi sóng, âm ly... tùy chất lượng mà độ phức tạp sẽ khác nhau ạ. Và cái giá phải trả về kinh tế...
              hôm nay, 13:11
            • tuyennhan
              Trả lời cho Sửa bộ nguồn DC 60V 45A
              bởi tuyennhan
              Sửa dạng này thì chuyên còn không dám chắc khộng cháy nổ với linh kiện bán ngoài chợ nói gì khộng chuyên .
              hôm nay, 09:25
            • tuyennhan
              Trả lời cho Cần tư vấn cải thiện chất âm thanh loa SoNy.
              bởi tuyennhan
              Đúng rồi chọn mua theo tai . ca thì phải toàn dải nhạc thì chỉ cao và thấp thé nên loa ca thì nghe nhạc không hay và ngược lại .
              Muốn ca và nhạc đều hay thì phải dúng 2 giàn , còn nếu chỉ có 1 thì phải chỉnh sửa lại sao cho ca và nhạc đều được không quá dở ....
              hôm nay, 09:10
            • Ng.Phuong.5
              Vấn đề in lỗ khoan ra pdf ở Orcad 9.2
              bởi Ng.Phuong.5
              Vấn đề cũ: khi in mạch ra pdf và bấm chọn Keep Drill Holes Open, in ra thì pdf trắng đen các lỗ chân linh kiện như nhau. Mặc dù có linh kiện phần Drill là 1mm, có linh kiện thì là 3mm. Cho em hỏi cách sửa phần này ở Orcad 9.2 với ạ.
              Mấy con...
              Hôm qua, 19:44
            • viettinh
              Trả lời cho Cần tư vấn cải thiện chất âm thanh loa SoNy.
              bởi viettinh
              Bác nói đúng quá. Cơ mà muốn mua hàng chính hãng, hàng thương hiệu mà tai lại hợp hàng tầu mới khổ chứ.
              Đang tính mua cái loa tầu nữa cột đằng sau loa này, Loa sony chỉ để hát nhép thôi, có dc k các bác ...
              Hôm qua, 18:12
            • nguyendinhvan
              Trả lời cho Cần tư vấn cải thiện chất âm thanh loa SoNy.
              bởi nguyendinhvan
              Theo tôi thì khi hpj sản xuất ra cái loa đó, đã có nhiều chuyên gia kỹ thuật hiệu chỉnh, tính toán các phần tử kỹ lưỡng rồi.
              Bây giờ tính toán hiệu chỉnh lại cần có đội ngũ tương đương với nhà sản xuất.
              Cách đơn giản...
              Hôm qua, 00:04
            • mèomướp
              Trả lời cho Sửa bộ nguồn DC 60V 45A
              bởi mèomướp
              Dạ cháu có ý tốt muốn động viên chú ấy ngâm cứu khoa học thôi ạ. Về phần kiểm tra dao động thì chú ấy chưa biết thì sẽ tìm hiểu được là cần những gì ạ, chắc chắn là khi hướng dẫn phần ấy các cô chú nào đó sẽ lưu ý cần loại sò công suất ra tránh cháy nổ rồi ạ....
              08-01-2025, 19:02
            • tuyennhan
              Trả lời cho Sửa bộ nguồn DC 60V 45A
              bởi tuyennhan
              Chủ thớt hỏi có kiểm tra được dao động mà không cấp nguồn thì rõ trình ở mức nào mà mèo còn xúi ngâm cứu nữa ác vậy ....
              08-01-2025, 15:43
            • tuyennhan
              Trả lời cho Cần tư vấn cải thiện chất âm thanh loa SoNy.
              bởi tuyennhan
              Loa bass đấu trực tiếp không qua phân tần để thành loa toàn dải xem có thoát tiếng khộng , nếu không thoát cần phải sửa lại mạch cs hay âm sắc nếu đủ trình còn nếu thoát ca hay nhưng chưa vừa ý vì bass kém chăc thì đấu lại như cũ và đấu thêm loa mid treble bên ngoài .
              08-01-2025, 15:28
            • mèomướp
              Trả lời cho Cần tư vấn cải thiện chất âm thanh loa SoNy.
              bởi mèomướp
              Dạ loa tép bé xíu như ngón chân cái thôi ạ. Thiếu gì chỗ để đâu. Quan trọng là gắn thêm nó loa nghe ok hay ko thôi ạ...
              08-01-2025, 11:44
            Đang tải...
            X