PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > Cơ bản về vi điều khiển và PIC

Tài trợ cho PIC Vietnam
Trang chủ Đăng Kí Hỏi/Ðáp Thành Viên Lịch Tìm Kiếm Bài Trong Ngày Ðánh Dấu Ðã Ðọc Vi điều khiển

Cơ bản về vi điều khiển và PIC Những bài hướng dẫn cơ bản nhất để làm quen với vi điều khiển PIC

Ðề tài đã khoá
 
Ðiều Chỉnh Xếp Bài
Old 08-11-2006, 08:32 PM   #1
hanspkt
Đệ tử 3 túi
 
Tham gia ngày: Aug 2006
Bài gửi: 55
:
Xin chào!
Sao không thấy ai bàn về cách viết chương trình xuất ra led 7 đoạn bằng ASM nhỉ?
Em vừa mới tìm được cách chuyển đổi từ mã nhị phân 8bit sang mã bcd để xuất ra led 7 doan, nhưng em không biết cách để chuyển mã nhị phân 16bit sang mã bcd, mong được các bác chỉ giáo.
Đây là cách chuyển mã nhị phân 8bit sang mã bcd
;***********************************************
tram
movwf tam
clrf tg
tram_loop
movlw .100
incf tg,f
subwf tam,f
btfsc STATUS,C
goto tram_loop
decf tg,w
return
;*************************************************
chuc
movwf tam
clrf tg
chuc_loop
movlw .10
incf tg,f
subwf tam,f
btfsc STATUS,C
goto chuc_loop
decf tg,w
goto chuc1

chuc1
movwf tg
movlw .10
chuc1_loop
subwf tg,f
btfsc STATUS,C
goto chuc1_loop
addwf tg,w
return
;*************************************************
DONVID

MOVWF tg
DV
MOVLW .10
SUBWF tg,F
BTFSC STATUS,C
GOTO DV
MOVLW .10
ADDWF tg,W
RETURN
;************************************************* **
các kết quả nằm trong W

cám ơn nhiều!
hanspkt vẫn chưa có mặt trong diễn đàn  
Old 08-11-2006, 09:06 PM   #2
namqn
Trưởng lão PIC bang
 
Tham gia ngày: Feb 2006
Nơi Cư Ngụ: Tp. HCM, Việt Nam
Bài gửi: 3,025
:
Send a message via Yahoo to namqn
Thuật toán trực quan:

Ví dụ với số 8-bit, giá trị tối đa là 255, do đó số BCD có 3 chữ số. Tính từ hàng trăm đến hàng đơn vị, lấy số cần chuyển trừ cho 1 đơn vị của hàng trăm (tức là 100) đến khi có kết quả âm thì không trừ nữa, coi như đã chuyển xong hàng trăm, lấy phần dư thực hiện tiếp cho hàng chục, sau đó đến hàng đơn vị.

Với số 16-bit, giá trị tối đa là 65535, do đó số BCD có 5 chữ số. Cũng có thể làm theo cách tương tự, nhưng vấn đề ở đây là vi xử lý 8 bit không thể trừ hai số 16-bit với nhau một cách trực tiếp. Do đó cần phải có một số chương trình con để thực hiện các phép toán giữa các số 16-bit. Nếu không muốn đau đầu thì người dùng thường chọn ngôn ngữ cấp cao. Nếu vẫn muốn đau đầu thì tìm trên mạng hay tự viết các chương trình con hợp ngữ cho 16-bit.

Thân,
__________________
Biển học mênh mông, sức người có hạn.

Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau:
http://www.picvietnam.com/forum/showthread.php?t=1263
namqn vẫn chưa có mặt trong diễn đàn  
Old 03-12-2006, 10:06 AM   #3
Jerry
Đệ tử 5 túi
 
Jerry's Avatar
 
Tham gia ngày: Sep 2006
Bài gửi: 101
:
Đổi mã nhị phân 16bit sang 5 byte bcd unpacked

Trích:
Nguyên văn bởi hanspkt View Post
Xin chào!
Em vừa mới tìm được cách chuyển đổi từ mã nhị phân 8bit sang mã bcd để xuất ra led 7 doan, nhưng em không biết cách để chuyển mã nhị phân 16bit sang mã bcd, mong được các bác chỉ giáo.
Code:
; Đổi mã nhị phân 16bit sang 5byte BCD unpacked

;****************************
;Binary 16 bit to BCD unpacked 5 digit
;****************************
; Input : hex number in Hi, Lo (16bit binary)
; Output : TenK:Thou:Hun:Ten:Ones

bin16tobcdup5:
	swapf	Hi,w	
        	andlw   	0x0F     	
        	addlw   	0xF0		
        	movwf   	Thou	
        	addwf   	Thou,f	
        	addlw   	.226	
        	movwf  	Hun	
        	addlw   	.50	
       	movwf   	Ones	

        	movf    	Hi,w	
        	andlw   	0x0F
        	addwf   	Hun,f	
        	addwf   	Hun,f	
        	addwf   	Ones,f	
        	addlw   	.233	
        	movwf   	Ten	
        	addwf   	Ten,f	
        	addwf   	Ten,f	

        	swapf   	Lo,w	
        	andlw   	0x0F	
        	addwf   	Ten,f	
        	addwf   	Ones,f	

        	rlf     	Ten,f	
        	rlf     	Ones,f	
        	comf    	Ones,f	
        	rlf     	Ones,f	

        	movf    	Lo,w	
        	andlw   	0x0F	
        	addwf   	Ones,f	
        	rlf     	Thou,f	

        	movlw   	0x07	
        	movwf   	TenK	

        	movlw   	.10	
Lb1:			
        	addwf   	Ones,f	
        	decf    	Ten,f	
       	btfss   	3,0
         	goto   	Lb1	
	
Lb2:			
        	addwf   	Ten,f	
        	decf    	Hun,f	
        	btfss   	3,0
         	goto   	Lb2	
Lb3:			
        	addwf   	Hun,f	
        	decf    	Thou,f	
        	btfss   	3,0
         	goto   	Lb3	
Lb4:			
        	addwf   	Thou,f	
        	decf    	TenK,f	
        	btfss   	3,0
         	goto   	Lb4	
        	retlw   	0

; Phần khai báo đầu chương trình thêm vào khai báo RAM:
	CBLOCK	0x20
	TenK
	Thou
	Hun
	Ten
	Ones
	Hi
	Lo
             ENDC

; gọi thử chương trình đổi mã nhị phân 16bit sang 5 byte bcd unpacked 
	movlw	0xff
	movwf	Hi
	movlw	0xff
	movwf	Lo
	call	bin16tobcdup5

Notes: Nhờ các Mod edit lại phần code sao cho dễ nhìn hộ em, em chẳng biết làm thế nào!!!Thanks

namqn: Chọn phần code cần định dạng, chọn nút có hình dấu '#' trên thanh công cụ (ở trong khung soạn thảo lớn nhé). Cách khác là đặt mã [ code] trước phần code cần định dạng, và mã [ /code] ngay sau phần cần định dạng (nhớ là không có khoảng trắng bên trong các tag [] nhé, tôi phải để khoảng trắng thì các tag mới hiển thị được).

thay đổi nội dung bởi: namqn, 03-12-2006 lúc 07:12 PM.
Jerry vẫn chưa có mặt trong diễn đàn  
Ðề tài đã khoá

Ðiều Chỉnh
Xếp Bài

Quyền Sử Dụng Ở Diễn Ðàn
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Mở
Smilies đang Mở
[IMG] đang Mở
HTML đang Tắt

Chuyển đến

Similar Threads
Ðề tài Người gửi Chuyên mục Trả lời Bài mới
TUT về USART trong PIC16F877A mafd_47a MPASM 16 19-02-2025 05:32 AM
TUT ve I2C ( pic16f877a ) mafd_47a MPASM 28 28-01-2025 10:45 PM
Lập nhóm PIC16F877A nhh Cơ bản về vi điều khiển và PIC 285 08-03-2017 11:08 PM
Bộ so sánh và PWM cho PIC16F877A anhquangngai Cơ bản về vi điều khiển và PIC 24 08-09-2012 09:00 AM
CCS C for PIC16F877A nhh Các ngôn ngữ lập trình khác (CCS C, HT PIC,...) 405 24-04-2008 12:00 PM


Múi giờ GMT. Hiện tại là 06:59 AM.


Được sáng lập bởi Đoàn Hiệp
Powered by vBulletin®
Page copy protected against web site content infringement by Copyscape
Copyright © PIC Vietnam