標(biāo)題:
PIC單片機(jī)開發(fā)板之獨(dú)立鍵盤掃描C語言代碼
[打印本頁]
作者:
51黑芯片
時(shí)間:
2016-1-17 02:27
標(biāo)題:
PIC單片機(jī)開發(fā)板之獨(dú)立鍵盤掃描C語言代碼
這個(gè)是我自己diy的單片機(jī)開發(fā)板:
http://www.torrancerestoration.com/bbs/dpj-42590-1.html
/*
為自已寫的獨(dú)立鍵盤掃描
犯的錯(cuò):unsigned密寫成了unsigner一直提示找不到a,b
PORTD0=1;不行,要寫成PORTD=0x01;才可以,如果一定要寫,應(yīng)寫為RD0=1;
PORTD=0x03;不是第三個(gè)燈亮,而是0000 0011是兩個(gè)燈亮
PORTD=0x8則是0000 1000是第4個(gè)燈亮。。。。。出錯(cuò)因原進(jìn)制轉(zhuǎn)化,剛開始寫程序進(jìn)制轉(zhuǎn)化混掉了。
*/
#include <pic.h>
#define uchar unsigned char
#define uint unsigned int
__CONFIG(0x3B31);
const unsigned char table[] = {0x3f,0x6,0x5b,0x4f,0x66,0x6d,0x7c,0x7,0x7f,0x6f}; //數(shù)碼管數(shù)組
void delay(uchar x) //延時(shí)函數(shù)
{
uint a,b;
for(a=x;a>0;a--)
for(b=110;b>0;b--);
}
void scan(); //掃描鍵盤函數(shù) 聲明
void init() //初始化函數(shù)
{
TRISB=0xff;
TRISD=0x00;
TRISC=0X00;
TRISD=0x00;
PORTC=0Xff;
PORTD=0x00;
}
//-------------------主函數(shù)-----------------------------------------------------------
void main()
{
init ();
while(1)
{
scan(); //掃描鍵盤
}
}
//-------------------------------------------------------------------------------------
void scan()
{
if(RB0==0)
{
delay(10);
while(!RB0) PORTD=0x01;
}
if(RB1==0)
{
delay(10);
while(!RB1) PORTD=0x02;
}
if(RB2==0)
{
delay(10);
while(!RB2) PORTD=0x04;
}
if(RB3==0)
{
delay(10);
while(!RB3) PORTD=0x08;
}
}
復(fù)制代碼
作者:
51黑芯片
時(shí)間:
2016-1-17 02:28
PORTC=0X00可以。我把你的程序運(yùn)行一下,結(jié)果就聞到一股糊了味道。我一摸,18B20那個(gè)燙啊,接著就斷點(diǎn)了。
一檢測,RC0接18B20的,高電平,估計(jì)是燒了。不過沒事,我工作還有很多18b20啊。呵呵
主人:你會(huì)燒18B20估計(jì)是你極性接反了,1腳是接地,3腳才是電源,2腳還得加一個(gè)限流電阻10K啊。。!
10月31日 13:26
主人:程序下載過來運(yùn)行,永遠(yuǎn)不會(huì)燒的,除非你的硬件有問題程序是不會(huì)燒硬件的,既使寫錯(cuò)了也沒事,大不了運(yùn)行出錯(cuò)。僅次而矣。
作者:
lsx435372
時(shí)間:
2016-1-22 16:14
樓上很牛叉啊
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1