❶ PIC 18 單片機能不能達到時鍾頻率40M,指令周期為一個時鍾
能達到40M,這是最高的,而且需要內部PLL鎖相環倍頻才能得到的。
但PIC單片機達不到一個指令周期為一個時鍾周期。PIC16/18系列單片機是一隻指令周期為四個時鍾周期。而PIC24單片機是一個指令周期為兩個時鍾周期。
❷ pic18f系列單片機用什麼軟體可以讀取晶元裡面的資料
就用原公司的MPLAB 軟體,ICD2/ICD3/PICKIT2/PICKIT3就可以,但是有個前提,晶元是未加密的才能讀出來。如果是加密的,那就只能破解了。
❸ pic18f單片機,4*4鍵盤輸入4個值,在LCD上顯示出四個值的程序
#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
#define dd P0
sbit Rs=P0^0;
sbit Rw=P0^1;
sbit E=P0^2;
uchar key_led;
unsigned char code disp_code[]={"0123456789abcdef"};
unsigned char code key_code[]={
0xee,0xde,0xbe,0x7e,0xed,0xdd,0xbd,0x7d,
0xeb,0xdb,0xbb,0x7b,0xe7,0xd7,0xb7,0x77 };//注意這里你自己看下你電路是怎麼連得,對應改一下表單里的值
/*******************************************************************/
/*
*/
/* 延時子程序
*/
/*
*/
/*******************************************************************/
void delay(int ms)
{
int i;
while(ms--)
{
for(i = 0; i< 250; i++)
{
_nop_();
_nop_();
_nop_();
_nop_();
}
}
}
void delay_1ms(unsigned char i) //最小延時1ms
{ unsigned char j;
while(i--)
for(j=0;j<125; j++);
}
void delay_10ns(unsigned char i) //最小延時10ns
{
unsigned char j;
while(i--)
for(j=0;j<10; j++);
}
void write_com(unsigned char com,bit p) //寫指令
{if(p)
delay_10ns(5);
E=0;
Rs=0;
Rw=0;
dd=com;
delay_10ns(50); //>40ns
E=1;
delay_1ms(2); //>150ns
E=0;
delay_10ns(4); //>25+10ns
}
void write_date(unsigned char data) //寫數據
{
delay_10ns(50);
E=0;
Rs=1;
Rw=0;
dd=data;
delay_10ns(50);
E=1;
delay_10ns(50);
E=0;
delay_10ns(4);
}
void addr_x_y(unsigned char x,bit y) //寫坐標,定位置
{
unsigned char temp=0x80;
if(y)
{
temp|=0x40;
}
temp|=x;
write_com(temp,0);
}
void desplay_char(unsigned char x,bit y,unsigned char p)
//在指定位置顯示一個字元。
{
addr_x_y(x,y);
write_date(p);
}
void lcd_init(void)
{
delay_1ms(15);
write_com(0x38,0);
delay_1ms(5);
write_com(0x38,0);
delay_1ms(5);
write_com(0x38,0);
delay_1ms(5);
write_com(0x38,1);
write_com(0x08,1);
write_com(0x01,1);
write_com(0x06,1);
write_com(0x0c,1);
}
/**********************************************************
鍵盤掃描子函數
**********************************************************/
uchar keyscan()
{
uchar scan1,scan2,keycode,j;
P1=0xf0;
scan1=P1;
if((scan1&0xf0)!=0xf0) //判鍵是否按下
{
delay(30); //延時30ms
scan1=P1;
if((scan1&0xf0)!=0xf0) //二次判鍵是否按下
{
P1=0x0f;
scan2=P1;
keycode=scan1|scan2; //組合成鍵編碼
for(j=0;j<=15;j++)
{
if(keycode== key_code[j]) //查表得鍵值
{
delay(30);
key_led=j;
}
}
}
}
else return(16) ;
}
/**********************************************************
判鍵是否按下子函數
**********************************************************/
void keydown()
{
P1=0xf0;
if((P1&0xf0)!=0xf0)
{
keyscan();
}
}
/*******************************************************************/
/*
*/
/* 主程序
*/
/*
*/
/*******************************************************************/
void main(void)
{
lcd_init(); // 初始化lcd
key_led=16;
while(1)
{
keydown();
desplay_char(0,0,disp_code[key_led]);
}
}
❹ 求pic18單片機串口接收多位元組代碼
#include <p18cxxx.h>
#pragmaconfigOSC=HS,OSCS=OFF
#pragmaconfigPWRT=OFF,BOR=OFF
#pragmaconfigWDT=OFF
#pragmaconfigDEBUG=ON
#pragmaconfigLVP=OFF
volatile unsigned charreceiver_buffer;
void usart_isr(void);
#pragma code low_vector=0x18
void low_interrupt (void)
{_asm
goto usart_isr
_endasm
}
#pragma code
#pragma interruptlow usart_isr
void usart_isr (void)
{receiver_buffer=RCREG;} //中斷入口就是要求放一個GOTO 跳轉指令,中斷服務函數用關鍵詞定義,
void main(void)
{while(1){
//IO 初始化
//RB0,RB1,RB2,RB3->output
//RC6,RC7 ->input
PORTB=0x00;
TRISB=0x00;
TRISC=0xc0;
//波特率初始化9600
//Fosc=4MHZ
//BRGH=1
SPBRG=25;
//串口工作方式使能
TXSTAbits.SYNC=0;
TXSTAbits.BRGH=1;
TXSTAbits.TX9=0;
RCSTAbits.SPEN=1;
RCSTAbits.RX9=0;
//中斷使能
INTCONbits.GIE=1;
INTCONbits.PEIE=1;
PIE1bits.RCIE=1;
PIE1bits.TXIE=0;
//接收使能
RCSTAbits.CREN=1;
while(1){
//判斷接收位元組是否為0x55
//是,點LED
//否,繼續等待
if(receiver_buffer==0x55){
PORTBbits.RB0=1;
//發送使能
TXSTAbits.TXEN=1;
TXREG=0x55;
}
else
PORTBbits.RB0=0;
}
}
}
❺ PIC18單片機的優點
1,與PIC16相比,PIC18晶振頻率更高,換句話說是速度更快,外設資源也更豐富了,基本架構是一樣的。
2,與51系列相比,pic單片機綜合性能優於51單片機。具體優勢如下:
(1)匯流排結構:MCS-51的匯流排結構是馮-諾依曼型,計算機在同一個存儲空間取指令和數據,兩者不能同時進行;而PIC的匯流排結構是哈佛結構,指令和數據空間是完全分開的,一個用於指令,一個用於數據,由於可以對程序和數據同時進行訪問,所以提高了數據吞吐率。
(2)流水線結構:MCS-51的取指和執行採用單指令流水線結構,即取一條指令,執行完後再取下一條指令;而PIC的取指和執行採用雙指令流水線結構,當一條指令被執行時,允許下一條指令同時被取出,這樣就實現了單周期指令。
(3)寄存器組:PIC的所有寄存器,包括I/O口,定時器和程序計數器等都採用RAM結構形式,而且都只需要一個指令周期就可以完成訪問和操作;而MCS-51需要兩個或兩個以上的周期才能改變寄存器的內容。
❻ PIC18系列單片機
目前MICROCHIP公司推出了最新的16增強版,如PIC16F1947,其程序空間比887大了一倍,從原來的8k字提高到16K字,RAM從原來的368位元組提高到1024,SPI,IIC和UART也增加到了2個.時鍾的最高頻率也從原來的20MHz增加到32MHz,還有好多的性能上的增強.關鍵是,如果你用的是PICC編程,9.8的版本也支持這些新的晶元.價格還與887差不多,有的比887還便宜!
也就是說,你沒必要用18的了,只要用16的增強型就可以了!
建議你用PIC16F1939,引腳與887完全兼容,它的主要參數如下:
程序16K字,批量價為$1.61,其他參數不低於887,而887批量價為$1.78.
❼ pic18F系列單片機中的實時時鍾工作原理有誰能簡單解釋一下嗎
實時時鍾都有一個時鍾晶振,頻率為32.768kHz,這個頻率下計數到達了0x8000(十進制的32768)溢出,剛好是1s。
通常要定義一個時間結構體,如下:
struct { unsigned SECOND:6;
unsigned MINUTE:6;
unsigned HOUR:5;
unsigned DAY:5;
unsigned WEEKDAY:3;
unsigned MONTH:4;
unsigned YEAR:7;
}TIME;
在每秒中斷服務程序里,秒數不斷加1,每次加1都要判斷是否達到了60,如果達到60,讓秒清0,讓分鍾進1,並判斷分鍾是否達到了60,如果達到讓分鍾清0,時進1,再判斷時是否超過當月的最大天數(要判斷是哪個月,如是2月份還要判斷是否閏月)。。。
後面就不說了。現在知道實時時鍾的大概原理吧?
上面說的是用單片機加時鍾晶振的實時時鍾,如果用實時時鍾晶元,如DS1307,就簡單多了,只要有個時鍾晶振,單片機去讀取DS1307內存值就知道時鍾值了,這個也就不講了。
❽ 目前流行的PIC單片機都有哪些
看到你這個問題,我正在想什麼叫流行?也許別人用的多就叫流行,對吧?
要是從這個角度來說的話,PIC16Fxxxx系列和PIC18Fxxxx系列的單片機可能用得比較多一些,典型的如PIC16F877、PIC18F4520,很多開發板就是這兩個處理器。
(1)PIC16Fxxxx:具有豐富的內部模塊、完善的指令系統和良好的向下兼容性。是適合初學者入門的系列。
(2)PIC18Fxxxx:搞笑的16位指令系統,大容量的ROM和RAM結構使其更適合C語言編程。更為豐富的內部模塊和8位的硬體乘法器使其具備DSP的性能,學習的高級階段。
以上說的都是8位MCU,當然PIC單片機從8位、16位、32位的單片機都有,最簡單、最基礎的還是8位MCU,當你把8位單片機學精通的話再學高檔的就如虎添翼了。
❾ 請問什麼編譯器能夠編譯PIC單片機的18F系列
你好!
picc18是可以編譯18f系列的。我剛試過了。看看在建工程時是不是選對型號了。一定要保證建工程時選對型號。在其他地方改型號是不可以的。另外,頭文件要用pic18系列,即程序第一句是#include
.你再試試,看行不行。
如有疑問,請追問。
❿ PIC18F1220 單片機是幾位單片機
8位單片機。其餘信息摘自PIC18F1220/1320說明文檔:
Low-Power Features: Peripheral Highlights:
* Power Managed modes: * High current sink/source 25 mA/25 mA
- Run: CPU on, peripherals on * Three external interrupts
- Idle: CPU off, peripherals on * Enhanced Capture/Compare/PWM (ECCP) mole:
- Sleep: CPU off, peripherals off - One, two or four PWM outputs
* Power Consumption modes: - Selectable polarity
- PRI_RUN: 150 μA, 1 MHz, 2V - Programmable dead time
- PRI_IDLE: 37 μA, 1 MHz, 2V - Auto-Shutdown and Auto-Restart
- SEC_RUN: 14 μA, 32 kHz, 2V - Capture is 16-bit, max resolution 6.25 ns (TCY/16)
- SEC_IDLE: 5.8 μA, 32 kHz, 2V - Compare is 16-bit, max resolution 100 ns (TCY)
- RC_RUN: 110 μA, 1 MHz, 2V * Compatible 10-bit, up to 13-channel Analog-to-
Digital Converter mole (A/D) with programmable
- RC_IDLE: 52 μA, 1 MHz, 2V
acquisition time
- Sleep: 0.1 μA, 1 MHz, 2V
* Enhanced USART mole:
* Timer1 Oscillator: 1.1 μA, 32 kHz, 2V
- Supports RS-485, RS-232 and LIN 1.2
* Watchdog Timer: 2.1 μA
- Auto-Wake-up on Start bit
* Two-Speed Oscillator Start-up
- Auto-Baud Detect
Oscillators:
Special Microcontroller Features:
* Four Crystal modes:
* 100,000 erase/write cycle Enhanced Flash
- LP, XT, HS: up to 25 MHz
program memory typical
- HSPLL: 4-10 MHz (16-40 MHz internal)
* 1,000,000 erase/write cycle Data EEPROM
* Two External RC modes, up to 4 MHz
memory typical
* Two External Clock modes, up to 40 MHz
* Flash/Data EEPROM Retention: > 40 years
* Internal oscillator block:
* Self-programmable under software control
- 8 user-selectable frequencies: 31 kHz, 125 kHz,
* Priority levels for interrupts
250 kHz, 500 kHz, 1 MHz, 2 MHz, 4 MHz, 8 MHz
* 8 x 8 Single-Cycle Hardware Multiplier
- 125 kHz to 8 MHz calibrated to 1%
* Extended Watchdog Timer (WDT):
- Two modes select one or two I/O pins
- Programmable period from 41 ms to 131s
- OSCTUNE – Allows user to shift frequency
- 2% stability over VDD and Temperature
* Secondary oscillator using Timer1 @ 32 kHz
* Single-supply 5V In-Circuit Serial Programming(TM)
* Fail-Safe Clock Monitor
(ICSP(TM)) via two pins
- Allows for safe shutdown if peripheral clock stops
* In-Circuit Debug (ICD) via two pins
* Wide operating voltage range: 2.0V to 5.5V