Thông báo

Collapse
No announcement yet.

tạo chương trình trễ 1 giây cho 89c51

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

  • tạo chương trình trễ 1 giây cho 89c51

    các bác giúp em tạo chương trình trể 1s cho ic 89c51 với

  • #2
    Bạn tham khảo:
    void delay_10ms (unsigned int time)
    {
    unsigned int x;
    for(x=1;x<=time;x++)
    {
    TMOD=0x11;
    TH0=55536/256;
    TL0=55536%256;
    TR0=1;
    while(!TF0);
    TF0=TR0=0;
    }
    }
    Mua bán thiết bị điện công nghiệp tại Hà Nội, toàn quốc.
    http://diencongnghiep360.com/
    http://tudienhathe.vn/

    Comment


    • #3
      Nếu bạn dùng thạch anh 12Mhz có thể xử dụng chương trình con như sau:

      void Delay_ms(unsigned int t) // t là thời gian Delay, tính bằng đơn vi ms
      {
      unsigned int x,y;
      for(x=0;x<t;x++)
      {
      for(y=0;y<=120;y++);
      }
      }

      Sau đó bạn có thể gọi như sau:
      Delay_ms(1000); // Delay 1s

      Comment


      • #4
        Dùng timer là chính xác nhất ! Kể thằng KeilC hỗ trợ hàm delay có phải nhàn hơn bao nhiêu k.

        Comment


        • #5
          Nguyên văn bởi nhihuynhbmt Xem bài viết
          các bác giúp em tạo chương trình trể 1s cho ic 89c51 với
          Delay viết bằng assembly với thạch anh là 24Mhz:
          Đây là code delay chuẩn theo ms và tối đa là 255ms
          Code:
          ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          ;#######################################################################################
          ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          delay_ms:	
          	push	7
          	push	6
          	push	5
          	mov	r5,num_ms
          	mov 	r6,#4
          	mov 	r7,#249
          	djnz 	r7,$		;2*249=498
                 	djnz 	r6,$-4		;(489+2)*4=2000	;
          	djnz	r5,$-8		;(2000+2)*num_ms= clk_delay
          	pop	5		;T_dl= clk_delay*chu_ki_may=clk_delay*1/(24000000/12)
          	pop	6		;	=clk_delay*1/2000000 ~= num_ms/1000 (s)
          	pop	7		;				=num_ms (ms)	
                  ret
          ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          ;#######################################################################################
          ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          Còn đây là code chuẩn delay s và tối đa delay là 255s
          Code:
          ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          ;#######################################################################################
          ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          delay_s:	
          	push	7
          	push	6
          	push	5
          	push	4
          	mov	r4,num_s
          	mov	r5,#20
          	mov 	r6,#200
          	mov 	r7,#249
          	djnz 	r7,$		;2*249=498
                 	djnz 	r6,$-4		;(498+2)*200=100000	
          	djnz	r5,$-8		;(100000+2)*20=2000000 
          	djnz	r4,$-12		;2000000*num_s = clk_delay
          	pop	4		;
          	pop	5		;T_dl= clk_delay*chu_ki_may=clk_delay*1/(24000000/12)
          	pop	6		;	=clk_delay*1/2000000 ~= num_s(s)
          	pop	7		;				
                  ret
          ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          ;#######################################################################################
          ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          Chú ý: num_ms và num_s là biến
          ví dụ delay:
          delay 10s và 50ms:
          Code:
          num_ms	equ	30h
          num_s	equ	31h
          mov	num_ms,#50
          mov	num_s,#10
          call	delay_ms
          call	delay_s

          Email:
          Tel: 0983.497.310

          Comment


          • #6
            dùng timer như bác ViệtThanh đó, chính xác hơn cả
            Nguyễn Huy Biên - 01649 802 694
            gmail :

            Comment


            • #7
              Nguyên văn bởi tienhuypro Xem bài viết
              Delay viết bằng assembly với thạch anh là 24Mhz:
              Đây là code delay chuẩn theo ms và tối đa là 255ms
              Code:
              ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
              ;#######################################################################################
              ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
              delay_ms:	
              	push	7
              	push	6
              	push	5
              	mov	r5,num_ms
              	mov 	r6,#4
              	mov 	r7,#249
              	djnz 	r7,$		;2*249=498
                     	djnz 	r6,$-4		;(489+2)*4=2000	;
              	djnz	r5,$-8		;(2000+2)*num_ms= clk_delay
              	pop	5		;T_dl= clk_delay*chu_ki_may=clk_delay*1/(24000000/12)
              	pop	6		;	=clk_delay*1/2000000 ~= num_ms/1000 (s)
              	pop	7		;				=num_ms (ms)	
                      ret
              ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
              ;#######################################################################################
              ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
              Còn đây là code chuẩn delay s và tối đa delay là 255s
              Code:
              ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
              ;#######################################################################################
              ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
              delay_s:	
              	push	7
              	push	6
              	push	5
              	push	4
              	mov	r4,num_s
              	mov	r5,#20
              	mov 	r6,#200
              	mov 	r7,#249
              	djnz 	r7,$		;2*249=498
                     	djnz 	r6,$-4		;(498+2)*200=100000	
              	djnz	r5,$-8		;(100000+2)*20=2000000 
              	djnz	r4,$-12		;2000000*num_s = clk_delay
              	pop	4		;
              	pop	5		;T_dl= clk_delay*chu_ki_may=clk_delay*1/(24000000/12)
              	pop	6		;	=clk_delay*1/2000000 ~= num_s(s)
              	pop	7		;				
                      ret
              ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
              ;#######################################################################################
              ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
              Chú ý: num_ms và num_s là biến
              ví dụ delay:
              delay 10s và 50ms:
              Code:
              num_ms	equ	30h
              num_s	equ	31h
              mov	num_ms,#50
              mov	num_s,#10
              call	delay_ms
              call	delay_s

              Bác tính toán được bộ code này hay thật.
              Bác có biết về lập trình cho LCD không bác vào link này giúp em với: http://www.dientuvietnam.net/forums/...8-bits-114797/

              Comment


              • #8
                1 vài chuơng trình delay cho thạch anh 12mhz:

                Delay1ms:
                call t1s
                t1s:
                push 30h
                push 31h
                push 32h
                mov 30h,#242
                x2t1s:mov 31h,#8
                x1t1s:mov 32h,#0
                djnz 32h,$
                djnz 31h,x1t1s
                djnz 30h,x2t1s
                push 33h
                mov 33h,#16
                djnz 33h,$
                pop 33h
                pop 32h
                pop 31h
                pop 30h
                ret

                Delay50ms:

                t50ms:
                push 30h
                push 31h
                mov 30h,#97
                mov 31h,#255
                lap:
                djnz 31h,$
                djnz 30h,lap
                pop 31h
                pop 30h
                mov r0,#64
                djnz r0,$
                ret

                Comment


                • #9
                  Nguyên văn bởi Ck33spkt Xem bài viết

                  Bác tính toán được bộ code này hay thật.
                  Bác có biết về lập trình cho LCD không bác vào link này giúp em với: http://www.dientuvietnam.net/forums/...8-bits-114797/
                  Đã sửa code cho bạn xong rùi, test thế nào nhé. Nếu OK thì bấm thanks cái cho vui nha

                  Email:
                  Tel: 0983.497.310

                  Comment


                  • #10
                    em viết chương trình bằng ngôn ngữ asm.có bác nào biết viết delay 1s ko giúp em với.em dùng thạch anh 12mhz.em đx viết chương trình xong chỉ cần chương trình con dlay trể 1s nữa ghép vào là ok.thank you!
                    Last edited by nhihuynhbmt; 05-05-2012, 19:11.

                    Comment


                    • #11
                      cái này có rất nhiều bạn tìm đọc trong 4rum nếu mới bắt đầu thì tìm đọc tài liệu của thầy:Phạm Hùng Kim Khánh.

                      Comment


                      • #12
                        Nguyên văn bởi nhihuynhbmt Xem bài viết
                        em viết chương trình bằng ngôn ngữ asm.có bác nào biết viết delay 1s ko giúp em với.em dùng thạch anh 12mhz.em đx viết chương trình xong chỉ cần chương trình con dlay trể 1s nữa ghép vào là ok.thank you!
                        Đã có code ở trên rồi đó bạn. Vừa delay_s và delay_ms

                        Email:
                        Tel: 0983.497.310

                        Comment


                        • #13
                          Nguyên văn bởi nhihuynhbmt Xem bài viết
                          em viết chương trình bằng ngôn ngữ asm.có bác nào biết viết delay 1s ko giúp em với.em dùng thạch anh 12mhz.em đx viết chương trình xong chỉ cần chương trình con dlay trể 1s nữa ghép vào là ok.thank you!
                          Bạn này không chịu đọc mấy comment của bác tienhuypro ở trên hả. Bác ấy đã tính toán và giải thích code khá chi tiết rồi còn gì.
                          Nếu không thích code trên thì mình cho bạn 1 code này:

                          Code:
                          ; START: Wait loop, time: 1 s
                          ; Clock: 12000.0 kHz (12 / MC)
                          ; Used registers: R0, R1, R2, R3
                          delay_1ms:
                          	PUSH 3
                          	PUSH 2
                          	PUSH 1
                          	PUSH 0
                          	MOV	R3, #03h
                          	MOV	R2, #0D2h
                          	MOV	R1, #24h
                          	MOV	R0, #14h
                          	DJNZ	R0, $
                          	DJNZ	R1, $-5
                          	DJNZ	R2, $-9
                          	DJNZ	R3, $-13
                          	MOV	R0, #059h
                          	DJNZ	R0, $
                          	POP 0
                          	POP 1
                          	POP 2
                          	POP 3
                          	RET
                          ; END: Wait loop

                          Comment


                          • #14
                            Chuong trjnh &quot;TRE 1S&quot;

                            TRE 1S:
                            MOV R0,#20
                            NHAN:
                            MOV TMOD,#01H
                            MOV TL0,#0AFH
                            MOV TH0,#0C3H
                            SETB TR0
                            CLR TF0
                            JNB TF0,S
                            DJNZ R0,NHAN
                            RET
                            END
                            Chúc các bác thành công!!!

                            Comment


                            • #15
                              Nguyên văn bởi Ck33spkt Xem bài viết

                              Bác tính toán được bộ code này hay thật.
                              Bác có biết về lập trình cho LCD không bác vào link này giúp em với: http://www.dientuvietnam.net/forums/...8-bits-114797/
                              MÌNH CÓ ĐOẠN CODE NÀY, SAO NÓ KHÔNG CHẠY VẬY?
                              ORG 0000H
                              MAIN:
                              CALL CT1

                              JMP MAIN
                              CT1:
                              SETB P0.0
                              CALL delay_s
                              CLR P0.0

                              delay_s:
                              push 7
                              push 6
                              push 5
                              push 4
                              mov r4,num_s
                              mov r5,#20
                              mov r6,#200
                              mov r7,#249
                              djnz r7,$ ;2*249=498
                              djnz r6,$-4 ;(498+2)*200=100000
                              djnz r5,$-8 ;(100000+2)*20=2000000
                              djnz r4,$-12 ;2000000*num_s = clk_delay
                              pop 4 ;
                              pop 5 ;T_dl= clk_delay*chu_ki_may=clk_delay*1/(24000000/12)
                              pop 6 ; =clk_delay*1/2000000 ~= num_s(s)
                              pop
                              RET
                              END

                              Comment

                              Về tác giả

                              Collapse

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

                              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