Download miễn phí Tài liệu Sử dụng CSS tiếng Việt
_Các loại biến sau được hỗ trợ :
int1 số 1 bit = true hay false ( 0 hay 1)
int8 số nguyên 1 byte ( 8 bit)
int16 số nguyên 16 bit
int32 số nguyên 32 bit
char ký tự 8 bit
float số thực 32 bit
short mặc định như kiểu int1
byte mặc định như kiểu int8
int mặc định như kiểu int8
long mặc định như kiểu int16
_Thêm signed hay unsigned phía trước để chỉ đó là số có dấu hay không dấu .Khai báo như trên
mặc định là không dấu . 4 khai báo cuối không nên dùng vì dễ nhầm lẫn . Thay vào đó nên dùng 4
khai báo đầu .
http://cloud.liketly.com/flash/edoc/jh2i1fkjb33wa7b577g9lou48iyvfkz6-swf-2014-02-25-tai_lieu_su_dung_css_tieng_viet.YD8kst1YiO.swf /tai-lieu/de-tai-ung-dung-tren-liketly-59103/
Để tải bản Đầy Đủ của tài liệu, xin Trả lời bài viết này, Mods sẽ gửi Link download cho bạn sớm nhất qua hòm tin nhắn.
Ai cần download tài liệu gì mà không tìm thấy ở đây, thì đăng yêu cầu down tại đây nhé:
Nhận download tài liệu miễn phí
Tóm tắt nội dung tài liệu:
b=0 , nếu b=a.0 thì b chỉ vị trí LSB ( bit thấp nhất , bên trái)Sau đó : b=1; //a=00001000 00100011 = 2083
_Lưu ý không dùng được : if ( 0xb.2 ) mà phải khai báo như trên rồi dùng : if(TMR1Flag)
_#BYTE id = x
X: địa chỉ id : tên biến C
Gán tên biến id cho địa chỉ (thanh ghi ) x , sau đó muốn gán hay kiểm tra địa chỉ x chỉ cần dùng id .
Không tốn thêm bộ nhớ , tên id thường dùng tên gợi nhớ chức năng thanh ghi ở địa chỉ đó . Lưu ý
rằng giá trị thanh ghi có thể thay đổi bất kỳ lúc nào do hoạt động chương trình nên giá trị id cũng tự
thay đổi theo giá trị thanh ghi đó . Không nên dùng id cho thanh ghi đa mục đích như 1 cách dùng
biến int8 vì CCS có thể dùng các thanh ghi này bất kỳ lúc nào cho chương trình , nếu muốn dùng
riêng , hãy dùng #LOCATE.
_VD:
#byte port_b = 0xc6; // 16F877 :0xc6 là địa chỉ portb
Muốn port b có giá trị 120 thì : port_b=120;
#byte status = 0xc3;
_ # LOCATE id = x
_Làm việc như #byte nhưng có thêm chức năng bảo vệ không cho CCS sử dụng địa chỉ đó vào mục
đích khác . VD: # LOCATE temp = 0xc20 // 0xc20 :thanh ghi đa mục đích
Cách sau tương tự :
Int8 temp ;
#locate temp = 0xc20
_ Sử dụng #LOCATE để gán biến cho 1 dãy địa chỉ kề nhau ( cặp thanh ghi ) sẽ tiện lợi hơn thay vì
phải dùng 2 biến với #byte .
VD : CCP1 có giá trị là cặp thanh ghi 0x15 ( byte thấp ) và 0x16 ( byte cao ) . Để gán trị cho CCP1 :
Int16 CCP1;
#locate CCP1= 0x15 // byte thấp của CCP1 ở 0x15 , byte cao của CCP1 ở 0x16
Gán trị cho CCP1 sẽ tự động gán vào cả 2 thanh ghi
CCP1 = 1133 ; // = 00000100 01101101 Ỉ 0x15 = 00000100 , 0x16 = 01101101
_# DEFINE id text
Text : chuỗi hay số . Dùng định nghĩa giá trị .
VD : #define a 12345
4 / _ # DEVICE :
# DEVICE chip option
chip : tên VĐK sử dụng , không dùng tham số này nếu đã khai báo tên chip ở # include .
option : toán tử tiêu chuẩn theo từng chip:
* = 5 dùng pointer 5 bit ( tất cả PIC )
* = 8 dùng pointer 8 bit ( PIC14 và PIC18 )
* = 16 dùng pointer 16 bit ( PIC14 ,PIC 18)
ADC = x sử dụng ADC x bit ( 8 , 10 , . . . bit tuỳ chip ) , khi dùng hàm read_adc( ) , sẽ trả
về giá trị x bit .
18
ICD = true : tạo mã tương thích debug phần cứng Microchip
HIGH_INTS = TRUE : cho phép dùng ngắt ưu tiên cao
_Khai báo pointer 8 bit , bạn sử dụng được tối đa 256 byte RAM cho tất cả biến chương trình .
_Khai báo pointer 16 bit , bạn sử dụng được hết số RAM có của VDK .
_Chỉ nên dùng duy nhất 1 khai báo #device cho cả pointer và ADC .
VD : #device * = 16 ADC = 10
5 / _ # ORG :
# org start , end
# org segment
#org start , end { }
Start , end: bắt đầu và kết thúc vùng ROM dành riêng cho hàm theo sau , hay để riêng không dùng
.
VD :
Org 0x30 , 0x1F
Void xu_ly( )
{
} // hàm này bắt đầu ở địa chỉ 0x30
org 0x1E00
anotherfunc( )
{
} //hàm này bắt đầu tuỳ ý ở 0x1E00 đến 0x1F00
Org 0x30 , 0x1F { }
// không có gì cả đặt trong vùng ROM này
_Thường thì không dùng ORG .
6 / _ # USE :
# USE delay ( clock = speed )
Speed : giá trị OSC mà bạn dùng . VD: dùng thạch anh dao động 40Mhz thì :
#use delay( clock = 40000000)
_Chỉ khi có chỉ thị này thì trong chương trình bạn mới được dùng hàm delay_us ( ) và delay_ms( ) .
#USE fast_io ( port)
Port : là tên port :từ A-G ( tuỳ chip )
_Dùng cái này thì trong chương trình khi dùng các lệnh io như output_low() , . . . nó sẽ set chỉ với 1
lệnh , nhanh hơn so với khi không dùng chỉ thị này.
_Trong hàm main( ) bạn phải dùng hàm set_tris_x( ) để chỉ rõ chân vào ra thì chỉ thị trên mới có
hiệu lực , không thì chương trình sẽ chạy sai .
_Không cần dùng nếu không có yêu cầu gì đặc biệt .
VD : # use fast_io( A )
#USE I2C ( options )
_Thiết lập giao tiếp I2C.
Option bao gồm các thông số sau, cách nhau bởi dấu phẩy :
Master : chip ở chế độ master
19
Slave : chip ở chế độ slave
SCL = pin : chỉ định chân SCL
SDA = pin : chỉ định chân SDA
ADDRESS =x : chỉ định địa chỉ chế độ slave
FAST : chỉ định FAST I2C
SLOW : chỉ định SLOW I2C
RESTART_WDT : restart WDT trong khi chờ I2C_READ( )
FORCE_HW : sử dụng chúc năng phần cứng I2C ( nếu chip hỗ trợ )
NOFLOAT_HIGH : không cho phép tín hiệu ở float high ( ??? ) , tín hiệu được lái từ thấp lên cao.
SMBUS : bus dùng không phải bus I2C , nhưng là cái gì đó tương tự .
_VD :
#use I2C ( master , sda=pin_B0 , scl = pin_B1 )
#use I2C (slave , sda= pin_C4 , scl= pin_C3 , address = 0xa00 , FORCE_HW )
#USE RS232 ( options )
_Thiết lập giao tiếp RS232 cho chip ( có hiệu lực sau khi nạp chương trình cho chip , không phải
giao tiếp RS232 đang sử dụng để nạp chip ) .
Option bao gồm :
BAUD = x : thiết lập tốc độ baud rate : 19200 , 38400 , 9600 , . . .
PARITY = x : x= N ,E hay O , với N : không dùng bit chẵn lẻ .
XMIT = pin : set chân transmit ( chuyển data)
RCV = pin : set chân receive ( nhận data )
_Các thông số trên hay dùng nhất , các tham số khác sẽ bổ sung sau.
VD :
#use rs232(baud=19200,parity=n,xmit=pin_C6,rcv=pin_C7)
7 / _ Một số chỉ thị tiền xử lý khác :
#CASE : cho phép phân biệt chữ hoa / thường trong tên biến , dành cho những ai quen lập trình C .
#OPT n :với n=0 – 9 : chỉ định cấp độ tối ưu mã , không cần dùng thì mặc định là 9 ( very tối ưu ) .
#PRIORITY ints : với ints là danh sách các ngắt theo thứ tự ưu tiên thực hiện khi có nhiều ngắt xảy
ra đồng thời , ngắt đứng đầu sẽ là ngắt ưu tiên nhất , dùng ngắt nào đưa ngắt đó vô . Chỉ cần dùng
nếu dùng hơn 1 ngắt . Xem cụ thể phần ngắt .
VD : #priority int_CCP1 , int_timer1 // ngắt CCP1 ưu tiên nhất
MỘT SỐ VẤN ĐỀ QUAN TRỌNG KHÁC – xem chi tiết trong phần Giúp :
_Biểu thức : xem HELP->Expressions , trong đó : biểu thị số trong C:
123 : số decimal 0x3 , 0xB1 : số hex 0b100110 : số binary
‘a’ : ký tự
“abcd” : chuỗi , ký tự null được thêm phía sau
_Các toán tử C : xem Operators
>= , < = , = = , != ( không bằng )
&& : and || : or ! : not ( đảo của bit , không phải đảo của byte )
20
>>n : dịch trái n bit << n : dịch phải n bit
++ , - - , += , - = , . . .
CHƯƠNG 2 :
CÁÙC HÀØM XỬÛ LÝÙ SỐÁ , XỬÛ LÝÙ BIT , DELAY
I / _ CÁC HÀM XỬ LÝ SỐ :
_Bao gồm các hàm:
Sin() cos() tan() Asin() acos() atan()
Abs() : lấy trị tuyệt đối
Ceil( ) :làm tròn theo hướng tăng
Floor ( ) :làm tròn theo hướng giảm
Exp ( ) : tính e^x
Log ( ) :
Log10 ( ) :
Pow ( ) : tính luỹ thừa
Sqrt ( ) :căn thức
_Các hàm này chạy rất chậm trên các VDK không có bộ nhân phần cứng ( PIC 14 ,12 ) vì chủ yếu
tính toán với số thực và trả về cũng số thực ( 32 bit ) và bằng phần mềm .VD hàm sin mất 3.5 ms (
thạch anh = 20Mhz )để cho KQ . Do đó nếu không đòi hỏi tốc độ thì dùng các hàm này cho đơn giản
, như là dùng hàm sin thì khỏi phải lập bảng tra.
_Xem chi tiết trên Giúp CCS , cũng dễ đọc thôi mà. Hơn nữa chúng ít dùng .
II / _ CÁC HÀM XỬ LÝ BIT VÀ CÁC PHÉP TOÁN :
_Bao gồm các hàmsau :
Shift_right() shift_left()
Rotate_right() rotate_left()
Bit_clear() bit_set() bit_test() Swap()
Make8() make16() make32()
1 / Shift_right ( address , byte , value )
Shift_left ( address , byte , value )
_Dịch phải (trái ) 1 bit vào 1 mảng hay 1 cấu trúc . Địa chỉ có thể là địa chỉ mảng hay địa chỉ trỏ tới
cấu trúc ( kiểu như &data) . Bit 0 byte thấp nhất là LSB .
2 / Rotate_right () , rotate_left ()
_Nói chung 4 hàm này ít sử dụng .
3 / Bit_clear ( var , bit )
21
Bit_set ( var , bit )
_Bit_clear ( ) dùng xóa ( set = 0 ) bit được chỉ định bởi vị trí bit trong biến var .
_Bit_set ( ) dùng set=1 bit được chỉ định bởi vị trí bit trong biến var .
...