51單片機(jī)的C語言基本用法
這是之前的視頻——51單片機(jī)快速入門(https://www.bilibili.com/video/BV1Dv411B7Pw)中的TXT文件,這里發(fā)一下,方便大家來找。
視頻中開發(fā)板的程序資料:http://www.prechin.net/forum.php?mod=viewthread&tid=35264&extra=
STC官網(wǎng):http://www.stcmcudata.com/
MDK5(51版)https://www.keil.com/c51/demo/eval/c51.htm#/DOWNLOAD
51單片機(jī)概述:
創(chuàng)建工程的過程
MDK5(51版)
燒錄程序的過程
ch340g usb轉(zhuǎn)串口
stc-isp軟件 pz-isp軟件
單片機(jī)的手冊
51單片機(jī)程序的編寫方法
匯編語言(了解即可)
org 0000h
MOV a,#2fh
sjmp $
仿真寄存器的值
C語言
引用頭文件(注意格式規(guī)范)
#include <reg51.h>
某些增強(qiáng)型單片機(jī)需要自己尋找頭文件,keil中沒有提供
學(xué)會查看頭文件的內(nèi)容
定義引腳
sbit P10=P1^0;
直接對IO口進(jìn)行操作
P1=0xff;
粗略的延遲函數(shù)
基于12M晶振
us延遲
void delay_us(int n_us)
{
?int j,k;
?for(j=0;j<n_us;j++)
for(k=0;k<1;k++);
}
ms延遲
void delay_ms(unsigned int a)
{
int q;
while(a--){
for(q=400;q>0;q--);
}
}
led燈的驅(qū)動
根據(jù)電路判斷寫1還是寫0
仿真方法
PORT2.7
流水燈
P2=0xfe;
循環(huán)中寫
P2=P2<<1;
開關(guān)檢測
先寫1,后讀取
注意分析電路
數(shù)碼管的驅(qū)動原理
字形碼
? 共陰? ? 共陽
0? 3F? ? ? C0
1? 06? ? ? F9
2? 5B? ? ? A4
3? 4F? ? ? B0
4? 66? ? ? 99
5? 6D? ? ?92
6? 7D? ? ?82
7? 07? ? ?F8
8? 7F? ? ?80
9? 6F? ? ?90
A? 77? ? ?88
B? 7C? ? ?83
C? 39? ? ?C6
D? 5E? ? ?A1
E? ?79? ? ?86
F? ?71? ? ?8E
H? 76? ? ?89
P? 73? ? ?8C
顯示一個數(shù)字
P1=0xf1;
P0=0x3f;
掃描顯示
寫入ROM
unsigned char code DIG_PLACE[4]={0xf1,0xf2,0xf4,0xf8};
unsigned char code DIG_CODE[17] = {
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
P1=DIG_PLACE[0];
P0=DIG_CODE[4];
delay_us(1);
P1=DIG_PLACE[1];
P0=DIG_CODE[3];
delay_us(1);
P1=DIG_PLACE[2];
P0=DIG_CODE[2];
delay_us(1);
P1=DIG_PLACE[3];
P0=DIG_CODE[1];
delay_us(1);
還有一些專用的數(shù)據(jù)管驅(qū)動芯片
LCD顯示屏(學(xué)會調(diào)用廠家封裝的庫)
用到的文件移植到自己程序里
中斷與定時器
概念
51的定時器
配置
num=65536-nus/1;
TMOD=0x01;
TH0=num/256;
TL0=num%256;
th0=TH0;
tl0=TL0;
EA=1;
ET0=1;
//PT0=1;
TR0=1;
中斷服務(wù)函數(shù)
TIMER0()interrupt 1
{
TH0=th0;
TL0=tl0;
}
外部中斷
P3.2? ?INT0
P3.3? ?INT1
配置
EA=1;
EX0=1;
//PX0=1;
IT0=1;
中斷服務(wù)函數(shù)
INT0_()interrupt 0
{
//IE0=0;
}