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 Cần tư vấn cải thiện chất âm thanh loa SoNy.bởi nguyendinhvanTheo 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...-
Channel: Điện thanh
hôm nay, 00:04 -
-
bởi Ng.Phuong.5Vấ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...-
Channel: Hướng dẫn sử dụng diễn đàn
Hôm qua, 22:44 -
-
Trả lời cho Sửa bộ nguồn DC 60V 45Abởi mèomướpDạ 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 ạ....
-
Channel: Điện tử công suất
Hôm qua, 19:02 -
-
Trả lời cho Sửa bộ nguồn DC 60V 45Abởi tuyennhanChủ 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 ....
-
Channel: Điện tử công suất
Hôm qua, 15:43 -
-
Trả lời cho Cần tư vấn cải thiện chất âm thanh loa SoNy.bởi tuyennhanLoa 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 .
-
Channel: Điện thanh
Hôm qua, 15:28 -
-
Trả lời cho Cần tư vấn cải thiện chất âm thanh loa SoNy.bởi mèomướpDạ 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 ạ...
-
Channel: Điện thanh
Hôm qua, 11:44 -
-
Trả lời cho Cần tư vấn cải thiện chất âm thanh loa SoNy.bởi viettinhNó không phải cái loa rời. Chả nhẽ đèo thêm 2 con loa tép ngoài thì kỳ lắm....
-
Channel: Điện thanh
Hôm qua, 09:45 -
-
Trả lời cho Cần tư vấn cải thiện chất âm thanh loa SoNy.bởi mèomướpDạ chú mua thêm loa tép nối tiếp qua con tụ rồi mắc vào cùng loa trung là được ạ...
-
Channel: Điện thanh
07-01-2025, 19:53 -
-
Trả lời cho Tìm datasheet linh kiện điện tử.bởi mèomướpDạ cháu hỏi bạn cháu thì bạn ấy trả lời như thế này ạ. Cháu cũng hông bít có đúng hông nữa ạ
Linh kiện điện tử với mã "943BA" và "W58BAL" là một loại cầu chì tự động (circuit breaker) do TE Connectivity sản...-
Channel: Điện tử dành cho người mới bắt đầu
07-01-2025, 19:50 -
-
bởi viettinhChuyện là mình mới đập hộp con loa kéo Sony SRS-XV900. Do khu vực mình k có sẵn hàng để trải nghiệm thực tế nên chỉ tham khảo các kênh revew online.
Mua về sử dụng thì thấy hơi buồn về chất âm, Mở max k to bằng cái loa kéo china, bass...-
Channel: Điện thanh
07-01-2025, 17:18 -
Comment