Các anh ơi cho em hỏi, em đang làm mạch đếm sản phẩm, số lượng sản phẩm từ 0 đến 9999, thanh ghi đếm em chọn là DPTR, nhưng khi giá trị đếm vượt quá 256 thì em không biết cách nào hiệu chỉnh để xuất ra 7SEG. Mong các anh giúp đỡ dùm ! Thanks !
Thông báo
Collapse
No announcement yet.
Xử lý biến đếm lớn hơn 256 để xuất led
Collapse
X
-
Nguyên văn bởi toilq30 Xem bài viếtCác anh ơi cho em hỏi, em đang làm mạch đếm sản phẩm, số lượng sản phẩm từ 0 đến 9999, thanh ghi đếm em chọn là DPTR, nhưng khi giá trị đếm vượt quá 256 thì em không biết cách nào hiệu chỉnh để xuất ra 7SEG. Mong các anh giúp đỡ dùm ! Thanks !
vd:
mov R0,#255
ct1: mov R1,#255
.....................
ct2: djnz r1,ct2
djnz r2,ct1
kq lặp = 255x255 = 65025 lần
tha hồ cho bạn đếm nhé. Chúc thành côngLast edited by lenovo_y410; 05-10-2009, 23:06.
-
Nguyên văn bởi lenovo_y410 Xem bài viếtbạn có thể dùng vòng lặp để có thể đếm giá trị lớn hơn:
vd:
ct1: mov R0,#255
ct2: mov R1,#255
.....................
djnz r1,ct2
djnz r2,ct1
kq lặp = 255x255 = 65025 lần
tha hồ cho bạn đếm nhé. Chúc thành công
Comment
-
http://8052.com Vào trang này mà xem thuật toán thực hiện phép cộng trừ nhân chia 16 bit sử dụng 2 thanh ghi 8bit
Comment
-
Khai báo 1 biến kiểu unsigned int, nó có giá trị từ 0 đến 65535 thì đếm vô tư rồi.
Mỗi lần có sản phẩm đi qua thi cho biến này tăng thêm 1 giá trị.
Kết quả ta chia lấy phần nghìn, trăm, chuc và phấn đơn vị xuất ra Led.
Ví dụ như thế này chẳng hạn:
PHP Code:unsigned int result;
unsigned char a,b,c,d;
d = result/1000; // Số hàng nghìn
c =(result%1000)/100; // Số hàng trăm
b = ((result%1000)%100)/10; // Số hàng chục
a =((result%1000)%100)%10; // Số hàng đơn vị
Comment
-
4 ký số bcd dùng 2byte
Nguyên văn bởi toilq30 Xem bài viếtCác anh ơi cho em hỏi, em đang làm mạch đếm sản phẩm, số lượng sản phẩm từ 0 đến 9999, thanh ghi đếm em chọn là DPTR, nhưng khi giá trị đếm vượt quá 256 thì em không biết cách nào hiệu chỉnh để xuất ra 7SEG. Mong các anh giúp đỡ dùm ! Thanks !
bcdh equ 30h
bcdl equ 31h
buffer_bcd1 equ 32h
buffer_bcd2 equ 33h
buffer_bcd4 equ 34h
buffer_bcd3 equ 35h
led_num equ 36h
inc_index_bcd:
mov a,bcdl ; byte thấp bcd
add a,#1
da a ;đổi sang số BCD
mov bcdl,a
mov a,bcdh ; byte cao bcd
addc a,#0 ;nếu bcdl tràn từ 99--00 thì tăng bcd lên 1(C=1)
da a ;đổi sang số BCD
mov bcdh,a
mov a,bcdl
mov r0,#buffer_bcd1
xchd a,@r0 ;lấy số hàng đơn vị
swap a
mov r0,#buffer_bcd2
xchd a,@r0 ;hàng chục
mov a,bcdh
mov r0,#buffer_bcd3
xchd a,@r0 ;hàng trăm
swap a
mov r0,#buffer_bcd4
xchd a,@r0 ;hàng nghìn
retAttached Files
Email:
Tel: 0983.497.310
Comment
-
Nguyên văn bởi toilq30 Xem bài viếtem cảm ơn sự nhiệt tình của các anh. Code viết = C nhìn dễ hiểu quá, đúng là C cấp cao thật. Còn ASM nhìn phức tạp quá, em sẽ nghiên cứu kỹ, nếu có gì thắc mắc em nhờ các anh giúp đỡ thêm. Vì em dang làm đồ án về mạch đếm mà . thanks
code tôi test ok chúc bạn thành công
Email:
Tel: 0983.497.310
Comment
-
Mấy anh ơi cho em hỏi sơ đồ kết nối để giao tiếp với EEPROM như trong hình sau đúng hay không vậy ? Do em muốn lưu trữ giá trị đếm lỡ khi mất điện nên em sử dụng con này. Và sẵn tiện các anh có thể giải thích dùm em chương trình đọc và ghi dữ liệu ( kèm file 24c04.asm) vào eeprom được không ?
Sao em đính kèm file mà không được !
;RAM LOCATION USED IN THIS MODULE 70H
;THIS IS A WORKING PROGRAM, TESTED ON 24C04 SERIAL MEMORY IC
;THE SAME CODE CAN BE USED FOR OTHER I2C IC'S WITH MODIFICATION.
#include <sfr51.inc>
WTCMD EQU 10100000B ;24C04 WRITE COMMAND
RDCMD EQU 10100001B ;24C04 READ COMMAND
ADDRS EQU 70H
SCL BIT P3.0 ;SERIAL CLOCK PIN
SDA BIT P3.1 ;SERIAL DATA PIN
ORG 0000H
LJMP MAINLINE
ORG 0030H
MAINLINE:
MOV ADDRS,#00H
LOOP:
MOV R1,#11110000B
LCALL WRITE
INC ADDRS
MOV A,ADDRS
CJNE A,#0FH,LOOP
;************************************************* ****************************
;THIS IS USED TO WRITE INTO 24C04
;ARGUMENTS1 --> ADDRS => ADDRESS TO BE WRITTEN INTO,IN 24C04 MEMORY
;ARGUMENTS2 --> R1 ==> DATA TO BE WRITTEN
;RETURN --> NONE
;************************************************* **************************
WRITE:
MOV A,#WTCMD
ACALL OUTS
MOV A,ADDRS
ACALL OUT
MOV A,R1
ACALL OUT
ACALL TOP
RET
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@
;THIS SUB ROUTINE IS USED TO READ DATA FROM THE 24C04
;ARGUMENTS --> ADDRS ==> ADDRESS IN 24C04,THE DATA SHOULD BE READ FROM.
;RETURN --> R2(DATA THAT WAS READ)
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@
READ:
MOV A,#WTCMD
ACALL OUTS
MOV A,ADDRS
LCALL OUT
MOV A,#RDCMD
LCALL OUTS
LCALL IN
MOV R2,A
LCALL STOP
RET
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@
OUTS:
MOV B,#8
SETB SDA ; START CONDITTION
SETB SCL
NOP
CLR SDA
NOP
CLR SCL
NOP
NOP
OSLOOP:
RLC A
MOV SDA,C
SETB SCL
NOP
CLR SCL
DJNZ B,OSLOOP
SETB SDA
NOP
SETB SCL
NOP
CLR SCL
RET
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@
OUT:
MOV B,#8
OLOOP:
RLC A
MOV SDA,C
SETB SCL
NOP
CLR SCL
DJNZ B,OLOOP
SETB SDA
NOP
SETB SCL
NOP
CLR SCL
RET
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@
IN:
MOV B,#8
SETB SDA
NOP
NOP
CLR SCL
NOP
NOP
SETB SCL
NOP
NOP
INLOOP:
MOV C,SDA
RLC A
DJNZ B,INLOOP
CLR SCL
RET
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@
STOP:
CLR SDA
NOP
SETB SCL
NOP
SETB SDA
LCALL DLAYms
RET
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@
START:
CLR SCL
SETB SDA
NOP
SETB SCL
NOP
CLR SDA
LCALL DLAYms
RET
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@
DLAYms:
MOV R6,#150
MOV B,#00
MS1: DJNZ B,$ ;((2*255)+(2*255)*150
DJNZ B,$ ;=153 MILLI SECONDS
DJNZ R6,MS1
RET
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@
L_DELAY:
MOV R7,#0AH ;153 MILLISECONDS * 10
LLL: LCALL DLAYms ;1.53 SECONDS
DJNZ R7,LLL
RET
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@
END
Comment
Bài viết mới nhất
Collapse
-
Trả lời cho Giúp em về mạch MPPT và Solar Panel với!?bởi dinhthuong80(ĐT chia sẻ MPPT này, với mong muốn rằng, chúng ta hãy tự tin lên, hãy tự hào là người VN, đừng quá tin vào người khác, đừng quá thần tượng họ, cần kiểm tra thực chứng chứ không nên cứ cho các thiết bị thông minh, cao siêu là hoàn hảo)
-
Channel: Điện tử công suất
hôm nay, 12:08 -
-
Trả lời cho Giúp em về mạch MPPT và Solar Panel với!?bởi dinhthuong80Dưới đây là hình ảnh thực:
(bị phạm con tụ pi C17 (phía trên IC U3/DIP08: văng mất xác!)
(hàn vào vị trí C17 tụ pi 27nF ( giá trị phỏng đoán từ 10-100nF!), mạch vẫn chạy như trước khi cạy keo)...-
Channel: Điện tử công suất
hôm nay, 12:05 -
-
Trả lời cho Giúp em về mạch MPPT và Solar Panel với!?bởi dinhthuong80ĐT đã mạnh dạn mail thử cho hãng SRNE, họ trả lời là nó dùng nhiệt điện trở ở bên trong mạch như sau:
"Our street light controller product triggers high temperature protection based on internal thermistor sampling''
Thấy hơi lo lắng vì kiến thức điện tử...-
Channel: Điện tử công suất
hôm nay, 11:39 -
-
Trả lời cho tìm mua đồng hồ vạn năngbởi mèomướpDạ chú mua cái kẹp dòng ấy ạ. Chị hàng xóm nhà cháu có 1 cái thấy lâu lâu rùi chưa hỏng ạ. Ví dụ như mẫu này trên shoppee đầy ạ...
https://vn.shp.ee/dWYVgq7-
Channel: Điện tử dành cho người mới bắt đầu
21-01-2025, 12:48 -
-
Trả lời cho Sửa bộ nguồn DC 60V 45Abởi vi van phamBác Đinh Vặn sai rồi,bây giờ con nít mẫu giáo đã giải phương trình 2 ẩn số rồi.
Tôi chứng minh bác lên youtube đầy video đơn giản tựa rất hot, chỉ 1 transistor hay 1 con diode và hướng dẩn cách làm, tác giả không vẽ sơ đồ mạch điện...-
Channel: Điện tử công suất
21-01-2025, 11:55 -
-
Trả lời cho Sửa bộ nguồn DC 60V 45Abởi nguyendinhvanBây giờ mới có tháng giêng, bao giờ mới đến tháng mười ?
Các cháu mẫu giáo mới lên lớp 1 được có 4 tháng. Nên đừng lấy lý do chúng nó đã đi học rồi để bắt nó viết một bài luận văn, hay là giải bài toán hàm. Phải kiên nhẫn...-
Channel: Điện tử công suất
21-01-2025, 00:47 -
-
Trả lời cho tìm mua đồng hồ vạn năngbởi nguyendinhvanKhông có loại nào đủ một vạn chức năng đâu. Nó chỉ được 2345678 , hoặc khủng lắm thì được 10 chức năng.
-
Channel: Điện tử dành cho người mới bắt đầu
21-01-2025, 00:16 -
-
bởi since0501Cảm ơn bác đã chia sẻ!...
-
Channel: Điện tử dành cho người mới bắt đầu
19-01-2025, 19:00 -
-
bởi Lê Gia TứMình muốn tìm mua đồng hồ vạn năng giá khoảng 200k có đo tần số cao khoảng 0~1mhz mọi người tư vấn giúp mình với
-
Channel: Điện tử dành cho người mới bắt đầu
19-01-2025, 15:47 -
-
Trả lời cho Mạch tự động bật nguồnbởi davidcopyChỉ cần dùng R C mắc vô phím power là ok....
-
Channel: Điện tử gia dụng
18-01-2025, 20:47 -
Comment