導航:首頁 > 操作系統 > pic單片機c

pic單片機c

發布時間:2022-12-31 20:21:43

1. 有幾行PIC單片機的c語言程序代碼看不懂,請教一下。

1 static volatile unsigned TMR1 @ 0x0E;
0x0E 是寄存器地址。 表示這個TMR1是寄存器0x0E的值。 具體這個寄存器是做什麼用的,需要看你晶元的datasheet,比如 16F874A 16F877A 這個都是計數寄存器的地址。
2 PopQueue應該是一個彈出隊列的函數。
將隊列首彈出到msg中,返回值為PopSuccess表示取數據成功,取到的數據會存在msg中。
一般用於中斷傳數據給主線程。這個在主線程中接收。
3 __CONFIG(x) 一般是配置寄存器的。

2. PIC單片機C語言

是左移,>>表示右移動

相當於 HC595_DATA_HIGH PORTC |0x01;

如果是HC595_DATA_HIGH PORTC |=(1<<2),1左移2位,那就是0000 0100
相當於 HC595_DATA_HIGH PORTC |0x04;
就是把 HC595_DATA_HIGH PORTC這個數的2位(0,1,2----第三位與1進行或運算)

注意:這里指的是位運算,上面的0x01,0x04在 或運算的時候可以這么寫,因為其他位都是0,沒有關系

3. pic系列單片機用c語言編程時,讓他執行A/D轉換的指令是什麼

在C語言里沒有指令,只有語句,用C語言執行A/D轉換如下:
//A/D轉換初始化子程序
void
adinitial()
{
ADCON0=0x41;
//選擇A/D通道為RA0,且打開A/D轉換器
//在工作狀態,使A/D轉換時鍾為8Tosc
ADCON1=0X8E;
//轉換結果右移,及ADRESH寄存器的高6位為"0"
//把RA0口設置為模擬量輸入方式
ADIE=1;
//A/D轉換中斷允許
PEIE=1;
//外圍中斷允許
TRISA0=1;
//設置RA0為輸入方式
}
//讀ADRESH寄存器就能得到AD轉換值了,
匯編的如下:
ADINT
MOVLW
0X51
MOVWF
ADCON0
;選擇A/D轉換通道為RA2,且打開A/D在工
;作狀態,並使A/D轉換時鍾為8tosc
BANKSEL
ADCON1
;選BANK1體
MOVLW
0X80
MOVWF
ADCON1
;轉換結果右移,即ADRESH寄存器的高6位;為「0」,且把RA2口設置成模擬量輸入口
CLRF
PIE1
;禁止其它中斷
BSF
PIE1,ADIE
;A/D轉化中斷允許
BSF
TRISA,2
;設置RA2口為輸入方式
BSF
INTCON,PEIE
;外圍中斷允許
BSF
INTCON,GIE
;總中斷允許
BCF
STATUS,RP0
;返回BANK0
RETURN

4. PIC 單片機 C編譯語言的埠位操作語法

在PIC16中,你直接用
RC0=1;

RC0=0;
來對位操作
對於C18,你可以自己定義:
#define
_RC0
PORTCbits.RC0
這樣你就可以象PIC16那樣用了,只是前面要加個"_"
_RC0=1;
_RC0=0;
它們的原始定義參見相應晶元的h文件。

5. PIC單片機c語言中如何嵌套匯編

3樓的方法是用keil開發51單片機時候潛入匯編的
方法,對於pic單片機來說,不能這楊編譯。因為KEIL不能編譯pic單片機的C語言和匯編語言,必須用MPLAB+PICC或者MPLAB+
mc編譯器

一般pic12、16系列的8位中低端單片機的編譯器潛入匯編是用
_asm("
匯編單句語句
");
如果要輸入一大段匯編語句,則用:
#asm
N條匯編語句
#endasm

6. PIC單片機 c語言編程

以DIP-40的PIC16F877A來舉例 燈閃動頻率為1秒
void Delay_Ms(unsigned char n);
void main(void)
{
while(1)
{
RA0 = 1;//2腳輸出
//11腳是供電
RD2 = 1;//21腳輸出
trisA = 0x04; //4腳RA2作為輸入
if(RA2 == 0) //如果4腳為低電平
{
//執行代碼
}
else //如果4腳為高電平
{
//執行代碼
}
Delay_Ms(1000); //延時1秒
RA0 = 0;//2腳輸出
//11腳是供電
RD2 = 0;//21腳輸出
Delay_Ms(1000); //延時1秒
}
}
void Delay_Ms(unsigned char n) //延時程序
{
unsigned int i;
unsigned char j;
for(j=0;j<n;j++)
{
for(i=0;i<Fosc/44000;i++)
{
}
}
}

7. 一般8位PIC單片機使用C語言還是匯編語言編程,好像編譯器不是支持所有類型的單片機

一般是簡單的程序用匯編,復雜的程序用C,
PIC編譯器分PICC ,C18,C30
PICC 10F,12F,16F PICC 也有18F
c18 18f
c30 30f 24f 33f
根據個人情況選擇。

8. PIC單片機c語言中如何喂狗

首先你要說明你用的是哪款PIC的單片機和用哪個C編譯器。
PIC有中低端的八位單片機PIC10/12/16的,高端的八位單片機PIC18系列,1十六位單片機PIC24和dsPIC,還有一個PIC32是三十二位的。上述的都可以通過調用宏指令CLRWDT();來實現喂狗。
但他們的宏指令的聲明一般都是在各自的頭文件中,比如根據他們的數據手冊PIC10/12/16系列的宏指令聲明都在htc.h文件中,pic.h里我還沒試過。
而PIC18我用過的是MPLAB C18編譯器,其聲明宏指令的頭文件是這個晶元的名稱,如PIC18F4680.h。
而PIC24我用的是MPLAB C30編譯器我是直接根據數據手冊的要求在C文件里定義宏的:
#define ClrWdt() {__asm__ volatile ("clrwdt");}
而前面的八位單片機的C語言也可以用下列嵌入匯編的方法: asm("CLRWDT");

9. PIC單片機串口C程序

#include<reg51.h>
unsigned char a,flag;
unsigned int i;
void init_serial();

void init_serial() //初始化串口
{
TMOD=0x20;//設置定時器1為工作方式2
TH1=0xfd;
TL1=0xfd;
TR1=1;
REN=1;
SM0=0;
SM1=1;
EA=1;
ES=1;
}
void serial() interrupt 4
{
RI=0;
a=SBUF;
flag=1;
}
void main()
{
init_serial();
i=100;
flag=0;
while(1)
{
if(flag==1) //接受串口信息
{
ES=0;
P0=0x00;
while(i--);
P0=0xff;
SBUF=a;
flag=0;

while(!TI);
TI=0;
i=100;
ES=1;
}
}
}
這個是我自己寫的,單片機與計算機串口通信。計算機向單片機發送一個數據 然後單片機接受到後又把那個數據返回計算機。 歡迎提問……

10. pic單片機可以用c編程嗎用什麼編譯軟體他是屬於51系列的嗎

PIC單片機可以用C,
編譯環境(也就是編程軟體)為MPLAB,他不屬於51系列.

閱讀全文

與pic單片機c相關的資料

熱點內容
如何截獲手機app連接的ip 瀏覽:330
冰箱壓縮機是否需要電容 瀏覽:344
python列表每一行數據求和 瀏覽:274
自己有一台伺服器可以玩什麼 瀏覽:656
社會學波普諾pdf 瀏覽:584
解壓做食物的小視頻 瀏覽:758
pdf怎麼單獨設置文件夾 瀏覽:474
業務邏輯程序員 瀏覽:659
addto新建文件夾什麼意思 瀏覽:160
有伺服器地址怎麼安裝軟體 瀏覽:659
安卓如何完全清除數據 瀏覽:690
安卓安卓證書怎麼信任 瀏覽:53
伺服器被攻擊如何解決 瀏覽:221
學霸變成程序員 瀏覽:881
c語言編譯錯誤fatalerror 瀏覽:441
ipv4內部伺服器地址怎麼分配 瀏覽:463
java線程安全的方法 瀏覽:951
重復命令畫梯形 瀏覽:164
在疫情就是命令 瀏覽:328
自己搭建一個什麼伺服器好玩 瀏覽:253