Thông báo
Collapse
No announcement yet.
chuyển số 16bit thanh bcd...
Collapse
X
-
thì chia...nhưng vấn đề là nếu là số ffh...
làm sao mình hiển thị đượcLast edited by dinhthuan911; 10-09-2012, 22:22.đàn bà sinh ra để đàn ông ăn hiếp...ko ăn được thì hiếp....
Comment
-
Nguyên văn bởi dinhthuan911 Xem bài viếtchư hiểu lắm...mấy bác chỉ rõ hơn xíu đi.
lấy 24 chia 10 đc 2 dư 4
nếu viết ASM :
MOV A,#124
MOV B,#10
DIV AB ;A=#1 B=#24
MOV A,30H ;30H=#1
MOV B,#10
DIV AB ;A=#2 b=#4
MOV A,31H ;31H=#2
MOV B,32H ;32H=#4
Comment
-
Nguyên văn bởi dinhthuan911 Xem bài viếtheyyyy...
em lấy tl ra hiển thị.được tới 255...khi tới 256 tức là th = 1,tl = 00000000b
nó sai bét rồi...
giờ ghép làm sao để khi tl tang toi 11111111b,th là 000000001 thì nó hiẻn thị là 256...
Nếu số bạn đếm (từ 100 - 999) thì bạn chia cho 10 hai lần, lần chia đầu được số hàng hàng trăm chứa ở trong thanh ghi A (bạn cất nó vào một vùng RAM nào đó tùy bạn), số dư ở thanh ghi B, lấy số dư chia cho 10 một lần nữa được số hàng chục lưu ở thanh ghi A (bạn lại cất nó vào vùng RAM nào đó), còn số dư chính là số hàng đơn vị lưu ở thanh ghi B (cũng cất nó vào 1 vùng RAM). Tương tự số đến từ 1000 - 9999 thì chia cho 10 ba lần, lần đầu được số hàng nghìn, lần tiếp theo được số hàng trăm, rồi hàng chục và hàng đơn vị, cứ vậy nếu số lớn hơn 9999 thì chia cho 10 bốn lần, 5 lần ..v.v.
Khi cần hiển thị số hàng nào thì bạn lấy giá trị của số hàng đó ra và tra mã cho khớp với mã hiển thị của LED 7 thanh vậy là được!
P/S: Việc chia cho 10 bao nhiêu lần là tùy thuộc vào số LED 7 thanh bạn có: 2 Led thì chia 1 lần là đủ, 3 LED thì chia 2 lần, 4 LED thì chia 3 lần ... N LED thì chia N-1 lần cho 10.
Comment
-
có cái code của "khoai Tây" cho bạn tham khảo nè ^^
Code:;******************************************************************************* ;Hex16ToASCII: ;converts a 16 bit binary number to a ;string of ASCII characters. ;******************************************************************************* ;Input: ;R6--low byte of the 16BIT hext data ;R5--hi byte ;output: ;R4-- 1'S dec nuber of ACII ;R3-- 10'S dec number of ASCII ;R2-- 100'S dec nuber of ASCII ;R1-- 1000'S dec number of ASCII ;R0-- 10000'S dec number of ASCII ;usage: ;clear R0,R1,R2,R3,R4 ;mov R5,High BYTE of the data to be converted ;mov R6,Low byte of the data to be converted ;-------------------------------- Hex16ToASCII: push PSW push ACC CLR C MOV R0,#0 ;10,000 counter clear Hex16ASCIILoop1: MOV A,R6 ;"16bit hex data" - 10,000 (2710H) SUBB A,#10H MOV R6,A ;save left value MOV A,R5 SUBB A,#27H MOV R5,A JC Hex16AsciiComp1 ;if "16bit hex data"< 10,000,jump to skip1 INC R0 ;else save 10,000s counter jmp Hex16ASCIILoop1 ;again:"16bit hex data" - 10,000 (2710H) Hex16AsciiComp1: ;here is the compensation at condition ;"16bit hex data"< 10,000 ;because we have subtrate it with 10,000 ;so add 10,000 ;get the 1,000s',100s',10s',1s' value to R5R6 MOV A,R6 ADD A,#10H MOV R6,A MOV A,R5 ADDC A,#27H MOV R5,A CLR C ;End of the compensation MOV R1,#0 ;1,000 counter clear Hex16ASCIILoop2: ;subtrate the left data by 1,000(3E8) ;repeatedly,until R5R6<1,000 MOV A,R6 subb A,#0E8H mov R6,A MOV A,R5 subb A,#03H MOV R5,A JC Hex16AsciiComp2 ;the left R5R6 <1,000,jump to compesation 2 INC R1 ;else save the 1,000 counter R1 jmp Hex16ASCIILoop2 Hex16AsciiComp2: ;Compensate because subbtrate 1000 from R5R6 ;at the condition R5R6<1000 MOV A,R6 ADD A,#0E8H MOV R6,A MOV A,R5 ADDC A,#03H MOV R5,A CLR C MOV R2,#0 ;100S' counter clear Hex16AsciiLoop3: ;the 100s' (64H)condition mov A,R6 SUBB A,#64H mov R6,A MOV A,R5 subb A,#0 MOV R5,A JC Hex16AcsiiComp3 INC R2 jmp Hex16AsciiLoop3 Hex16AcsiiComp3: mov A,R6 ADD A,#64H MOV R6,A MOV A,R5 ADDC A,#0 MOV R5,A CLR C MOV R3,#0 ;10S' counter clear Hex16AsciiLoop4: ;10S' CONDITION, (R5 =0,so despite it) mov A,R6 SUBB A,#0AH MOV R6,A JC Hex16AsciiComp4 INC R3 jmp Hex16AsciiLoop4 Hex16AsciiComp4: add A,#0AH MOV R6,A ;here R6 represent 1S' mov R4,a ;1S' counter ->R4 ;NOW R4,R3,R2,R1,R0 all add 30H,to get real ;ASCII code clr c mov A,R4 addc A,#30H MOV R4,A MOV A,R3 ADD A,#30H MOV R3,A MOV A,R2 ADD A,#30H MOV R2,A MOV A,R1 ADD A,#30H MOV R1,A MOV A,R0 ADD A,#30H MOV R0,A pop PSW pop ACC RET end ;END OF CONVERATION ROUTINE. ;=========================================
Comment
Bài viết mới nhất
Collapse
-
bởi Trắng bạchem đang làm cái đồ án sử dụng pid để điều khiển Động Cơ DC Servo Giảm Tốc GA25 12v/280rpm, dùng winform truyền xuống pic16f877a các thông số vận tốc, ki, kd, kp. hiện tại em đã truyền xuống được nhưng truyền xuống vài lần là giao diện...
-
Channel: Hỗ trợ học tập
Hôm qua, 23:46 -
-
Trả lời cho Dùng MC34063 để làm driver lái led 1W, 3Wbởi nhathung1101Dự là bạn này định chế đèn led cho oto.
không hiểu các bạn hiểu về đèn led thế nào? chỉ mong các bạn hiểu cuộc sống chỉ có một lần thôi.-
Channel: Điện tử dành cho người mới bắt đầu
19-05-2024, 22:29 -
-
Trả lời cho Dùng MC34063 để làm driver lái led 1W, 3Wbởi bqvietChỗ đó là chỉ IC này chạy DC (tất nhiên) được mà AC cũng được. Khi chạy điện AC thì cần cầu nắn dòng và tụ lọc 100uF. Nếu chạy DC thì không cần cầu nắn mà tụ đó cũng chỉ cần tầm vài uF thôi. Cái đi-ốt thì càng dễ, luận tí...
-
Channel: Điện tử dành cho người mới bắt đầu
19-05-2024, 21:37 -
Comment