<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > PIC單片機(jī)CCS之C語言(#TYPE的用法)

          PIC單片機(jī)CCS之C語言(#TYPE的用法)

          作者: 時(shí)間:2016-11-17 來源:網(wǎng)絡(luò) 收藏
          #TYPE

          語法: #type standard-type=size

          本文引用地址:http://www.ex-cimer.com/article/201611/315399.htm

          #type default=area

          standard-type是short,int,long或用戶定義尺寸中的之一;

          size是1,8,16或32;

          area是#TYPE使用typemod命令定義的存儲區(qū).

          目的:編譯器默認(rèn)將short看作1位, 將int看作8位, 將long看作16位.傳統(tǒng)的C習(xí)慣為目標(biāo)處理器而將INT定義成更高效率的尺寸.在PIC中,INT是8位.為了有助于代碼兼容,#type命令允許改變這些關(guān)鍵字. #TYPE能重新定義這些關(guān)鍵字.

          注意:逗號是可選項(xiàng).當(dāng)然#TYPE可能使一些尺寸得不到4種關(guān)鍵字的描繪(如上面的1位整型),下面的4種整型可能總是被用來表示:INT1,INT8,INT16和INT32.如果在你的程序使用了#TYPE,在CCS中的例子程序和包含的文件被警告而可能不正確工作.

          這個(gè)命令也常用來將默認(rèn)的有用RAM區(qū)改變成變量存儲區(qū).通過指定default=area就可實(shí)現(xiàn),這里的area是一個(gè)typemod地址空間.

          例子:TYPE SHORT=8, INT=16, LONG=32

          #TYPE default=area

          typemod<,,,0x100,0x1ff>user_ram_block;

          #type default= user_ram_block //所有的變量將在0x100~0x1ff這個(gè)區(qū)進(jìn)行聲明

          #type default= //將存儲器重新存回通常的狀態(tài)

          例子文件:ex_cust.c

          文件: ex_cust.c如下:

          #pragma case //保持C編譯器之間的兼容性,它必須出現(xiàn)在其它任意預(yù)處理器命令之前

          #pragma type short=8,int=16,long=32 //重新定義short, int, long

          #define version 0x0001 //用version代替0x0001

          #if defined(__PCB__) //若使用了PCB編譯器,則defined( __PCB__)返回值為1

          #include <16C56.H> //包含16F877.h頭文件

          #pragma fuses HS, NOWDT, NOPROTECT //HS:高速晶振/諧振器, NOWDT:不使用WDT

          // NOPROTECT:程序存儲器代碼不保護(hù)

          #pragma use delay(clock=20000000) //使能內(nèi)置函數(shù)的功能:delay_ms()和delay_us()

          //#USE DELAY()必須在#use rs232()使用之前出現(xiàn).

          #pragma use rs232(baud=9600, xmit=PIN_A3, rcv=PIN_A2)

          //使用波特率為9600,

          //發(fā)送腳為PIN_A3

          //接收腳為PIN_A2

          //使能內(nèi)置函數(shù):GETC,PUTC和PRINTF, kbhit();

          #define compiler __PCB__ //用compiler代替__PCB__

          #elif defined(__PCM__)

          #include <16F877.H>

          #pragma fuses HS,NOWDT,NOPROTECT,NOLVP

          #pragma use delay(clock=20000000)

          #pragma use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7) // Jumpers: 8 to 11, 7 to 12

          #define compiler __PCM__

          #elif defined(__PCH__)

          #include <18F452.H>

          #pragma fuses HS,NOWDT,NOPROTECT,NOLVP

          #pragma use delay(clock=20000000)

          #pragma use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7) // Jumpers: 8 to 11, 7 to 12

          #define compiler __PCH__

          #endif //結(jié)束if定義

          #pragma id version

          #reserve 0x20:0x2f //將RAM從地址0x20到0x2f的單元保留下來不被使用

          //#reserve必須出現(xiàn)在#DEVICE命令之后,否則,沒有用

          int CYCLES; // Global cycles (note upper case)將CYCLES定義為16位全局整型變量

          #inline //告訴編譯器,下面的函數(shù)立即被執(zhí)行

          void pulse_B0() {

          #pragma use fast_io(B) //執(zhí)行I/O的快速方法將使編譯器不用對I/O方向寄存器進(jìn)行編程就//可執(zhí)行I/O操作,但用戶必須保證通過set_tris_X()來設(shè)置I/O方向寄//存器.

          output_low(PIN_B0); //腳(PIN_B0)輸出低電平

          delay_ms(100); //延時(shí)100ms

          output_high(PIN_B0); //腳(PIN_B0)輸出高電平

          delay_ms(100); //延時(shí)100ms

          #pragma use standard_io(B) //告訴編譯器,以后每次使用I/O,原來是輸出設(shè)置就永遠(yuǎn)是輸出

          //設(shè)置,直到下一個(gè)#USE XXX_io出現(xiàn)為止

          }

          #separate //告訴編譯器,下面的程序立即被分開執(zhí)行,

          //常用來阻止編譯器自動制造一個(gè)INLINE程序,也就說#inline到此為止,不再有效

          void send_pulses() {

          int cycles; // Local cycles (note lower case)

          for(cycles=CYCLES; cycles!=0; --cycles) {

          pulse_B0();

          }

          }

          #pragma zero_ram // #zero_ram將所有的內(nèi)部寄存器清0,I/O口為輸出設(shè)置

          void main() {

          output_low(PIN_B0); //腳(PIN_B0)輸出低電平

          output_low(PIN_B1); //腳(PIN_B1)輸出低電平

          printf("Firmware version is %4Xrn",version);

          printf("Compiled on %s with compiler version %srn", __DATE__, compiler);

          printf("Pulsing B0 and B1...");

          for(CYCLES=100;CYCLES<=300;CYCLES+=100) {

          printf("rnMajor cycle #%c...",(CYCLES/100)+0);

          output_low(PIN_B1); //腳(PIN_B1)輸出低電平

          output_high(PIN_B1); //腳(PIN_B1)輸出高電平

          send_pulses();

          }

          printf("rnAll Done.");

          delay_ms(3); // Allow UART to finish

          }



          關(guān)鍵詞: PIC單片機(jī)CCSTYP

          評論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();