PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > Các ngôn ngữ lập trình khác (CCS C, HT 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

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 01-10-2008, 12:29 AM   #1
nguyenquoctoan
Đệ tử 6 túi
 
Tham gia ngày: Nov 2007
Nơi Cư Ngụ: BK TP HCM
Bài gửi: 136
:
Question lập trình với ccs

các sư huynh cho em hỏi, em khai báo biến A7 là bit thứ 7 của biến A như vậy đúng hay sai
int8 A
#bit A7 = A.7
A có 8 bit, và A7 là bit thứ 7 của biến A
nguyenquoctoan vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 01-10-2008, 01:01 AM   #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
Trích:
Nguyên văn bởi nguyenquoctoan View Post
các sư huynh cho em hỏi, em khai báo biến A7 là bit thứ 7 của biến A như vậy đúng hay sai
int8 A
#bit A7 = A.7
A có 8 bit, và A7 là bit thứ 7 của biến A
Trong CCS C, vị trí bit được đánh từ 0. Do đó, A.7 là bit thứ 8 của byte A.

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   Trả Lời Với Trích Dẫn
Old 01-10-2008, 10:30 AM   #3
nguyenquoctoan
Đệ tử 6 túi
 
Tham gia ngày: Nov 2007
Nơi Cư Ngụ: BK TP HCM
Bài gửi: 136
:
dạ để em coi lại, ccs ko báo lỗi nhưng chương trình ko chạy, cảm ơn bác namqn
nguyenquoctoan vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 01-10-2008, 09:31 PM   #4
lion
Đệ tử 6 túi
 
lion's Avatar
 
Tham gia ngày: May 2007
Bài gửi: 127
:
bạn muốn dùng 1 bit cua biến A giả sử bit 7 chẳng hạn thì nên dùng căp lệnh :
bit_set(A,6) ; bit_clear(A,6) .
lion vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 02-10-2008, 01:44 AM   #5
nguyenquoctoan
Đệ tử 6 túi
 
Tham gia ngày: Nov 2007
Nơi Cư Ngụ: BK TP HCM
Bài gửi: 136
:
ý em là nhận dữ liệu từ bit8 của chân bàn phím ps2, vậy mà làm kô chạy
em giao tiếp keyboard ps2 với pic,...
- trong bàn phím ps2 bộ điều khiển thường là chip 8042, 8048, 8049, 8741, 8742, 6868, 6805...
-sơ đồ như hình dưới
-khi nhấn một phím ta đã tạo ra một xung clock,chân clock này được nối tới ngắt ngoài RB0, khi nhấn sẽ tạo ngắt,đồng thời ps2 sẽ truyền dữ liệu xuống pic dạng mã scancode, cơ chế truyền theo dạng 11bit,nhận cũng tương tự...
-nhiệm vụ chương trình ngắt là nhận mã scancose ps2 truyền xuống theo cơ chế truyến trên và bắt đầu từ bit cao nhất, dò mã scancode mà ps2 truyền đó là số nào trong mã ASCII và cho hiển thị, chương trình đơn giản chủ yếu lấy được mã từ ps2...cấm tất cả các ngắt khi nhận.
-khi truyền và nhận thời gian phải thích hợp đảm bảo giữa truyền và nhận dữ liệu
-cao cấp hơn là hai phím cùng nhấn,hay phím caplslk,...(tính sau) chương trình demo chưa chạy như sau:
-sư huynh nào đã làm hay hứng thú xin chỉ giáo tiểu đệ
//giao tiep cong ps2
//
//************************************************** ******************
#include <16F877a.h>
#fuses NOWDT,PUT,HS,NOPROTECT
#use delay(clock=4000000)
#include<lcd_lib_4bit.c>
#byte porta=0x05
#byte portb=0x06
#byte portc=0x07
#byte portd=0x08
#byte porte=0x09
#bit clk = portb.0
#bit data = portc.0
int8 A=0;
int i;
//int t;
#bit A7 = A.7
int du_lieu;
#int_ext
void ngat()
{
disable_interrupts(global);
//xung ck thu 1, bo qua bit start
LCD_putcmd(0x80);
delay_ms(100);
printf(LCD_putchar,"PIC_VIET_NAM");//kiem tra coi co ngat ?
delay_ms(100);
while(!clk){} //cho canh len (xung clock)

for (i = 0; i < 8; i++)
{ //chor canh xuong cua xung ck thu 2 thi bat dau nhan

while(clk){}
delay_ms(5);
A7 = data; //nhan bit du lieu bat dau tu bit cao nhat
A = A >> 1;
delay_ms(5);
while(!clk){} //cho xung ck len tro lai
}
du_lieu = A;
while(clk){} //cho xung ck len tro lai
while(!clk){} //bo qua bit parity
while(clk){}
while(!clk){} //bo qua bit stop

delay_ms(100);
enable_interrupts(global);

}

void main(void)
{

set_tris_b(0b00000001);
set_tris_c(0);
set_tris_e(0);
enable_interrupts(global);
enable_interrupts(int_ext);
ext_int_edge(H_to_L);
LCD_init();
LCD_putcmd(0x80);
delay_ms(100);
printf(LCD_putchar,"ps2 keyboard");
delay_ms(100);
LCD_putcmd(0xc0);
delay_ms(100);
//Line_2;
//45H,16H,1EH,26H,25H,2EH,36H,3DH,3EH,46H
//69 ,22 ,30 ,38 ,37 ,46 ,54 ,61 ,62 ,70 ,112,105,114,122,107,115,116,108,117,125
//'0123456789

if(du_lieu==0x45)
{
printf(LCD_putchar,"0");
delay_ms(250);
}

if(du_lieu==0x16)
{
printf(LCD_putchar,"1");
delay_ms(250);
}

if(du_lieu==0x1E)
{
printf(LCD_putchar,"2");
delay_ms(250);
}

if(du_lieu==0x26)
{
printf(LCD_putchar,"3");
delay_ms(250);
}

if(du_lieu==0x25)
{
printf(LCD_putchar,"4");
delay_ms(250);
}

if(du_lieu==0x2E)
{
printf(LCD_putchar,"5");
delay_ms(250);
}

if(du_lieu==0x36)
{
printf(LCD_putchar,"6");
delay_ms(250);
}

if(du_lieu==0x3D)
{
printf(LCD_putchar,"7");
delay_ms(250);
}

if(du_lieu==0x3E)
{
printf(LCD_putchar,"8");
delay_ms(250);
}

if(du_lieu==0x46)
{
printf(LCD_putchar,"9");
delay_ms(250);
}

else printf(LCD_putchar,"no thing press !");
delay_ms(250);

}
Hình Kèm Theo
File Type: bmp PS2.bmp (843.3 KB, 18 lần tải)
File Type: bmp nhan_ps2.bmp (247.4 KB, 14 lần tải)
File Type: bmp truyen ps2.bmp (245.7 KB, 14 lần tải)
nguyenquoctoan vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Trả lời

Ð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


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


Đượ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