Thông báo

Collapse
No announcement yet.

Tập viết chương trình cho 8051

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

  • Tập viết chương trình cho 8051

    Chào các bạn mình mới được học về môn Vi điều khiển nhưng học trung cấp thì chỉ học sơ sài cho biết thôi chứ không thể nào rành về nó được. Mình có khúc mắc về mạch này, có 5 led đơn, 1 phím bấm, khi mới cấp nguồn thì mạch chưa sáng led, khi bấm nút 1 lần thì led 1 sáng, bấm lần 2 thì led 2 sáng( led 1 tắt), bấm lần 3 thì led 3 sáng( led 1 va 2 tắt), các bạn có thể cho mình đoạn code để mình tìm hiểu về phím bấm và led đơn đươc không? Xin cám ơn tất cả các bạn.

  • #2
    bạn phải gửi mạch lên thì mới có code chi tiét được, mình góp ý với bạn thuật toán đơn giản như sau :
    if( phim1 được ấn )
    {
    phím ++;
    if(phím ==1) Led 1 sáng; tắt led 3
    if(phím ==2 ) Led 2 sáng; tắt led 1
    if( phím ==3) led 3 sáng; tắt led 2
    if(phím>3) phím =0;
    }

    Comment


    • #3
      cám ơn bạn, mình nối 5LED vào P0 từ P0.0-P0.4, và bàn phím nối vào P0.5, bạn làm ơn viết bằng ngôn ngữ ASM cho mình tập xem chứ mình chưa rành đâu, chỉ có 1 phím bấm thôi, Xin chào và chúc các bạn ngủ ngon.

      Comment


      • #4
        Nguyên văn bởi minhb Xem bài viết
        cám ơn bạn, mình nối 5LED vào P0 từ P0.0-P0.4, và bàn phím nối vào P0.5, bạn làm ơn viết bằng ngôn ngữ ASM cho mình tập xem chứ mình chưa rành đâu, chỉ có 1 phím bấm thôi, Xin chào và chúc các bạn ngủ ngon.
        Bác vào đây ngâm cúư nha: Trao đổi học tập - chi tiết

        Comment


        • #5
          Nguyên văn bởi minhb Xem bài viết
          Chào các bạn mình mới được học về môn Vi điều khiển nhưng học trung cấp thì chỉ học sơ sài cho biết thôi chứ không thể nào rành về nó được. Mình có khúc mắc về mạch này, có 5 led đơn, 1 phím bấm, khi mới cấp nguồn thì mạch chưa sáng led, khi bấm nút 1 lần thì led 1 sáng, bấm lần 2 thì led 2 sáng( led 1 tắt), bấm lần 3 thì led 3 sáng( led 1 va 2 tắt), các bạn có thể cho mình đoạn code để mình tìm hiểu về phím bấm và led đơn đươc không? Xin cám ơn tất cả các bạn.
          Code:
          NUT_BAM	EQU	P0.5
          ORG	0
          MAIN:	MOV	P0,#00H
          LOOPM1:	MOV	A,#01H
          LOOPM0:	JB	NUT_BAM,$
          	CALL	DEBOUNCE
          	JNB	NUT_BAM,$
          	MOV	P0,A
          	RL	A
          	CJNE	A,#00100000B,LOOPM0
          	SJMP	LOOPM1
          
          DEBOUNCE:
          	MOV	30H,#250
          LOOPD0:	MOV	31H,#250
          	DJNZ	31H,$
          	DJNZ	30H,LOOPD0
          RET
          END
          sài P0 cần gắn trở thanh
          Last edited by chung1608; 03-08-2012, 12:18.

          Comment


          • #6
            org 0000H
            main:
            mov A,P1
            mov P2,A
            jmb main
            end
            SĐt: 01238004961

            Comment


            • #7
              cái này là bạn dùng đếm sự kiện tỏng 89c51:
              Code:
              //DEM SU KIEN
              #include<at89x51.h>	
               void main()
              {
              	unsigned char led[10]={0xaa,0x55,0xE7,0xC3,0x81,0X7E,0X3C,0X18,0x00,0x0FF};
              	unsigned char i;
              		TMOD=0x06;
              		TL0=0xF6;
              		TH0=TL0;
              		TR0=1;
              	while (1)
              	{ 
              		i=TL0-0xF6;
              		if (TF0==1)		
              			{
              				TR0=0;
              				TF0=0;
              				TR0=1;
              				
              				}
              				else
              				{
              					P2=led[i];
              				}
              		}
              	}
              mạch : LEDOK.DSN
              Free Cloud Storage - MediaFire
              yahoo: boulevard.electronic
              Học tập & nghiên cứu

              phần mềm mình upload lên để chia sẻ:

              Comment


              • #8
                DEBOUNCE:
                MOV 30H,#250
                LOOPD0: MOV 31H,#250
                DJNZ 31H,$
                DJNZ 30H,LOOPD0
                chung1608 cho mình hỏi đoạn code chỗ này có chức năng như thế nào vậy??

                Comment


                • #9
                  Nguyên văn bởi jimmyli Xem bài viết
                  chung1608 cho mình hỏi đoạn code chỗ này có chức năng như thế nào vậy??
                  delay chống nảy phím

                  Comment


                  • #10
                    Nguyên văn bởi chung1608 Xem bài viết
                    Code:
                    NUT_BAM	EQU	P0.5
                    ORG	0
                    MAIN:	MOV	P0,#00H
                    LOOPM1:	MOV	A,#01H
                    LOOPM0:	JB	NUT_BAM,$
                    	CALL	DEBOUNCE
                    	JNB	NUT_BAM,$
                    	MOV	P0,A
                    	RL	A
                    	CJNE	A,#00100000B,LOOPM0
                    	SJMP	LOOPM1
                    
                    DEBOUNCE:
                    	MOV	30H,#250
                    LOOPD0:	MOV	31H,#250
                    	DJNZ	31H,$
                    	DJNZ	30H,LOOPD0
                    RET
                    END
                    sài P0 cần gắn trở thanh
                    Cám ơn bác Chung rất nhiều, code của bác đưa e thử đã chạy rất tốt, nhưng bác ơi, bác làm ơn cho e phần chú thích ở mỗi hàng câu lệnh được không? Thêm câu hỏi ngớ ngẩn nữa mong bác đừng chê e nha: ngay chỗ những câu lệnh này
                    "DJNZ 31H,$
                    DJNZ 30H,LOOPD0"
                    e có thể thay đổi địa chỉ của số 31H và 30H được không? và chữ $ trong lệnh đó có ý nghĩa gì?

                    Comment


                    • #11
                      Nguyên văn bởi phucan2104 Xem bài viết
                      Bác vào đây ngâm cúư nha: Trao đổi học tập - chi tiết
                      cám ơn bác nhiều nha, e sẽ tập trung vào đó xem thêm. giờ không có điều kiện học tiếp không biết tới bao giờ mới có thể tự viết được một chương trình đơn giản như led nháy (đơn giản đối với các cao thủ trên này thôi). Giá như ngày xưa học ở trường trung cấp nhà trường đừng cho môn này vào "thực đơn" của e thì..... thà không biết về nó còn hơn dở sống dở chết phải không các bác!!!!!!!!

                      Comment


                      • #12
                        Nguyên văn bởi minhb Xem bài viết
                        Cám ơn bác Chung rất nhiều, code của bác đưa e thử đã chạy rất tốt, nhưng bác ơi, bác làm ơn cho e phần chú thích ở mỗi hàng câu lệnh được không? Thêm câu hỏi ngớ ngẩn nữa mong bác đừng chê e nha: ngay chỗ những câu lệnh này
                        "DJNZ 31H,$
                        DJNZ 30H,LOOPD0"
                        e có thể thay đổi địa chỉ của số 31H và 30H được không? và chữ $ trong lệnh đó có ý nghĩa gì?
                        chú nói mà mình ko hiểu chú muốn đổi 2 ô nhớ 30H 31H hay chú đổi giá trị của 2 ô nhớ này là #250
                        $ là nhảy tại chỗ thay thế cho
                        Here: DJNZ 31H,here

                        Comment


                        • #13
                          Nguyên văn bởi chung1608 Xem bài viết
                          Code:
                          NUT_BAM	EQU	P0.5
                          ORG	0
                          MAIN:	MOV	P0,#00H
                          LOOPM1:	MOV	A,#01H
                          LOOPM0:	JB	NUT_BAM,$
                          	CALL	DEBOUNCE
                          	JNB	NUT_BAM,$
                          	MOV	P0,A
                          	RL	A
                          	CJNE	A,#00100000B,LOOPM0
                          	SJMP	LOOPM1
                          
                          DEBOUNCE:
                          	MOV	30H,#250
                          LOOPD0:	MOV	31H,#250
                          	DJNZ	31H,$
                          	DJNZ	30H,LOOPD0
                          RET
                          END
                          sài P0 cần gắn trở thanh
                          Cho em hỏi trở thanh có phải là trở băng không ?tại sao xài P0 lại phải dùng trở này?

                          Comment


                          • #14
                            Nguyên văn bởi tuanhvt Xem bài viết
                            Cho em hỏi trở thanh có phải là trở băng không ?tại sao xài P0 lại phải dùng trở này?
                            trở thanh là trở băng, P0 phải dùng vì chân của P0 thuộc loại cực thu hở, cực thu hở là gì thì search google dùng

                            Comment


                            • #15
                              Thank bác nhiều nhe, theo đoạn code trên bác đưa e thì e thay đổi ngay chỗ "CJNE A,#00100000B,LOOPM0" để chạy thêm được mấy con led nữa nhưng muốn chạy tràn qua port 2 thì cần phải thêm bớt gì nữa Bác ơi?

                              Comment

                              Về tác giả

                              Collapse

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

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

                              Collapse

                              Đang tải...
                              X