[color=rgb(0," (a="=0x08)" 允許左移8次。[="" align]P0M1=0x00; P0M0=0x00;P1M1=0x00; P1M0=0x00; P2M1=0x00; P2M0=0x00;P3M1=0x00; P3M0=0x00;
P4M1=0x00; P4M0=0x00;P5M1=0x00; P5M0=0x00;P6M1=0x00; P6M0=0x00;P7M1=0x00; P7M0=0x00;
}
void main()
{
unsigned char a;
port_mode(); // 將單片機所有端口配置為準雙向弱上拉方式 P2 = 0xFF; // P2口置弱上拉高電平輸出
while(1)
{
P0 = P2; // 循環檢測P2口輸入電平高低。
}
}
8 軟件仿真
%E7%AC%AC1%E7%AB%A0-%E5%8D%95%E7%89%87%E6%9C%BA%E9%AB%98%E6%95%88%E5%85%A5%E9%97%A8-10.jpg (70.72 KB, 下載次數: 178)
下載附件
2016-3-28 00:30 上傳
%E7%AC%AC1%E7%AB%A0-%E5%8D%95%E7%89%87%E6%9C%BA%E9%AB%98%E6%95%88%E5%85%A5%E9%97%A8-11.jpg (29.45 KB, 下載次數: 176)
下載附件
2016-3-28 00:30 上傳
9 硬件仿真
n 在STC程序下載軟件中首先選擇“Keil仿真設置”頁面,點擊“添加型號和頭文件到Keil 中”,在出現的目錄選擇窗口中,定位到Keil的安裝目錄(比如“C:Keil818”),“確 定”后出現“STC MCU型號添加成功”的提示信息,點“確定”。
%E7%AC%AC1%E7%AB%A0-%E5%8D%95%E7%89%87%E6%9C%BA%E9%AB%98%E6%95%88%E5%85%A5%E9%97%A8-12.jpg (39.86 KB, 下載次數: 167)
下載附件
2016-3-28 00:30 上傳
n 保持IAP15W4K58S4實驗電路仍然與電腦串口相連,如上圖所示,先選擇仿真芯片運 行時的R/C時鐘頻率或使用外部晶振,然后點擊“將IAP15W4K58S4設置為仿真芯片”按 鈕,給電路板上電,此時就將會有程序向芯片中下載,下載完成后仿真器便制作完成 了,IAP15W4K58S4設置成仿真芯片后,要想再變成一般的單片機無需任何操作,直接 將它當作單片機下載程序使用就可以了。
n 在Keil中新建項目,出現下圖 對話框,選擇“STC MCU Database”項,然后從列表 中選擇相應的MCU型號,在此選擇“STC15W4K32S4”,點擊“OK”完成選擇。
%E7%AC%AC1%E7%AB%A0-%E5%8D%95%E7%89%87%E6%9C%BA%E9%AB%98%E6%95%88%E5%85%A5%E9%97%A8-13.jpg (21.77 KB, 下載次數: 172)
下載附件
2016-3-28 00:30 上傳
%E7%AC%AC1%E7%AB%A0-%E5%8D%95%E7%89%87%E6%9C%BA%E9%AB%98%E6%95%88%E5%85%A5%E9%97%A8-30.jpg (76.2 KB, 下載次數: 180)
下載附件
2016-3-28 00:30 上傳
%E7%AC%AC1%E7%AB%A0-%E5%8D%95%E7%89%87%E6%9C%BA%E9%AB%98%E6%95%88%E5%85%A5%E9%97%A8-31.jpg (1020 Bytes, 下載次數: 168)
下載附件
2016-3-28 00:30 上傳
然后按下圖設置硬件仿真
%E7%AC%AC1%E7%AB%A0-%E5%8D%95%E7%89%87%E6%9C%BA%E9%AB%98%E6%95%88%E5%85%A5%E9%97%A8-32.jpg (1020 Bytes, 下載次數: 145)
下載附件
2016-3-28 00:30 上傳
確認前面我們所創建的項目編譯沒有錯誤后,按“Ctrl+F5”或工具欄圖標 開始調 試,若硬件連接無誤的話,將會進入到與軟件仿真類似的調試界面,只是現在可以一步一步 執行程序并控制硬件動作了)。 有時進入調試環境可能會失敗,首先檢查仿真串口號選擇是否有誤,另外可將單片機斷電 后重新上電試試,若使用的USB轉串口,可將USB頭斷開幾秒再插上,如果仍然不行,請檢查
程序代碼是否占用了仿真調試接口(P3.0與P3.1 )。
10 延時軟件使用方法
長時間延時,函數固定格式:
void delay500ms() // 大范圍精確延時函數
{
unsigned char i,j,k; // i,j,k由軟件計算出確定。
for(i=41;i>0;i--) // 注意后面沒分號
for(j=133;j>0;j--) // 注意后面沒分號
for(k=252;k>0;k--); // 注意后面有分號
}
短暫延時,函數固定格式:
void delay (unsigned char t) // 小范圍精確延時函數
{
while(--t);
}
根據不同的延時時間修改函數中的變量 i,j,k 與 t 即可, i,j,k 與 t 由筆者編寫的 軟件直接計算得出
%E7%AC%AC1%E7%AB%A0-%E5%8D%95%E7%89%87%E6%9C%BA%E9%AB%98%E6%95%88%E5%85%A5%E9%97%A8-14.jpg (91.24 KB, 下載次數: 141)
下載附件
2016-3-28 00:30 上傳
11 main()、void main()和int main()的區別
在C語言中main()和void main()區別:一個有返回值(沒聲明類型的 默認是返回值int型),一個無返回值,特別在單片機運用中由于主函數 沒有其它函數調用它,所以返回的值也就沒什么用。所以一般都寫的 void main(),這時程序中不需要return語句,如果main()函數前沒有void
(默認為int),或者寫為int main()程序中就必須有return語句,比如:
int main()
{
return 0; // 表示程序正常退出
}
在單片機程序中一般寫作void min()最方便,但在其它一些C編譯器中,寫
作void main()編譯是不能通過的,需要寫成int main(),int main()是C語言
的標準格式。
12 printf 格式化輸出函數(單片機與計算機通信)
例1.8 計算機串口助手顯示單片機內部簡單信息
#include "STC15W4K.H"
#include // 為使用KEIL自帶的庫函數printf而加入
void printstar()
{
printf("********************************");
}
void print_message()
{
printf("hello world"); // 最簡單輸出 printf("How do you do!"); // 輸出換行符 printf("歡迎學習STC51單片機"); // 中文輸出
}
void UART_init(void)
{
// 下面代碼設置定時器1
TMOD = 0x20; // 0010 0000 定時器1工作于方式2(8位自動重裝方式) TH1 = 0xFD; // 波特率:9600 /11.0592MHZ
TL1 = 0xFD; // 波特率:9600 /11.0592MHZ TR1 = 1;
// 下面代碼設置定串口
AUXR = 0x00; // 很關鍵,使用定時器1作為波特率發生器,S1ST2=0
SCON = 0x50; // 0101 0000 SM0.SM1=01(最普遍的8位通信),REN=1(允許接受) TI=1; // 很關鍵,使用printf函數時必須有此命令
}
void main()
{
}
UART_init(); // 初始化串口 printstar(); // 輸出************** print_message(); // 輸出說明文字 printstar(); // 輸出************** while(1) ; // 停在這里
我們把例1.8程序下載到單片機中,打開程序下載軟件的串口助手,接收緩沖區選擇文本模式,波特率
9600,打開串口,給實驗板斷電后上電,可以看到單片機發給計算機的信息如圖1-67所示,如果顯示 的個別字符出現亂碼或連續接收大量數據顯示不正常,可換用其它串口助手軟件,比如“丁丁串口調試 助手SSCOM 3.3”即可解決。實驗結果如下:
%E7%AC%AC1%E7%AB%A0-%E5%8D%95%E7%89%87%E6%9C%BA%E9%AB%98%E6%95%88%E5%85%A5%E9%97%A8-15.jpg (67.48 KB, 下載次數: 169)
下載附件
2016-3-28 00:30 上傳
13 學習用實驗板介紹
由于后續章節實驗很多,制作實驗電路比較耗費時間,可以購買實驗板產品。
%E7%AC%AC1%E7%AB%A0-%E5%8D%95%E7%89%87%E6%9C%BA%E9%AB%98%E6%95%88%E5%85%A5%E9%97%A8-16.jpg (149.44 KB, 下載次數: 182)
下載附件
2016-3-28 00:30 上傳
SD卡與MP3實驗板
%E7%AC%AC1%E7%AB%A0-%E5%8D%95%E7%89%87%E6%9C%BA%E9%AB%98%E6%95%88%E5%85%A5%E9%97%A8-17.jpg (110.66 KB, 下載次數: 163)
下載附件
2016-3-28 00:30 上傳