MCU reset 可以使用兩種
JL8051 發表在 痞客邦 留言(0) 人氣(1,454)
輪詢(Polling):
想像成老師在上課,老師每間隔一段時間就去問小明有沒有問題
JL8051 發表在 痞客邦 留言(0) 人氣(618)
Keil 編譯成功後會在 Build Output 事窗出現一條訊息:
Program Size: Code=5124 RO-data=696 RW-data=92 ZI-data=22316
這條訊息可以計算出所使用的 Code Size 。
Code:程式碼所佔的大小。
RO-data :程式中定義的常量 (Read Only)
RW-data:程式中有初始值的變數 (Read/Write)
ZI-data :程式中沒初始值的變數 (Zero Initialize)
JL8051 發表在 痞客邦 留言(0) 人氣(4,590)
HEX文件和BIN文件格式的區別
1.HEX文件是包括地址信息的,而BIN文件格式只包括了數據本身
在燒寫或下載HEX文件的時候,一般都不需要用戶指定地址,因為HEX文件內部的信息已經包括了地址。而燒寫BIN文件的時候,用戶是一定需要指定地址信息的。
2.BIN文件格式
對二進製文件而言,其實沒有”格式”。文件只是包括了純粹的二進制數據。
JL8051 發表在 痞客邦 留言(0) 人氣(4,949)

keilc 中可以執行script ,編譯結束後順便執行想要的bat檔案
如下圖的範例是,編譯完程式後可以執行123.bat檔案
JL8051 發表在 痞客邦 留言(0) 人氣(30)
偉詮電(2436)
https://www.104.com.tw/jobbank/custjob/index.php?r=cust&j=624a44245e46406738583a1d1d1d1d5f2443a363189j50
JL8051 發表在 痞客邦 留言(0) 人氣(109)
JL8051 發表在 痞客邦 留言(0) 人氣(129)

Keilc可以在編譯的前後,執行window 的script "bat",
設定地方在下圖 Run User Program After Build/Rebuild,
JL8051 發表在 痞客邦 留言(0) 人氣(121)
一個機械週期在 MCS-51 的規範裡指的是振盪器振盪 12 次
所以 假設我們在電路設計上使用了 12M 的石英振盪器(也就是一秒鐘振盪 12 百萬次),每振盪 12 次代表一個機械週期,那麼一個機械週期所要花費的時間就是 1 uS.
所以你只要下一個 需要一個機械周期的指令就可以延遲 1us
而 執行 nop 剛好需要一個機械周期
至於為何要用 nop,而不用其他的指令,是因為nop就是沒有做任何事,所以對你的程式也不會有任何的影響
JL8051 發表在 痞客邦 留言(0) 人氣(2,166)
#include "reg51.h"
#include "stdio.h"
sbit F1=P1^0; //F1就是代表P1^0這隻腳位
sbit F2=P1^1; //F2就是代表P1^1這隻腳位
sbit F3=P1^2; //F3就是代表P1^2這隻腳位
sbit F4=P1^3; //F4就是代表P1^3這隻腳位
void UART();
void delay(int);
void UARTOFF();//關閉9600RF傳值
unsigned char sbuf ,y;
char a,b,c;
bit x1=0;
main()
{
while(1)
{
UART();//開啟9600RF傳值
putchar('Q');
delay(10);
} UARTOFF();
}
void UART() //非同步傳輸
{
SCON=0x52; //串列控制暫存器01010010 TI=1 REN=1 01 8位元UART傳輸(8-11)
TMOD=0x20; //計時計數模式暫存器 00100000 設定定時器1為工作方式2
TCON=0x69; //計時計數控制暫存器 01101001
TH1=0xFD; //計時計數暫存器 <230> 鮑率1200
TR1=1; //計時計數控制暫存器裡面的TR1 //設置波特率 9600bps
ES=1; //串列中斷致能
EA=1; //全部中斷源致能
}
void SCON_int(void) interrupt 4 //串列副中斷函數(SCON串列控制暫存器,串列傳輸中斷 第四號中斷編號)
{
if(RI==1)//RI是中斷旗標他的功用是接收,1為接收,在4號中斷編號有RI跟TI,
// RI的用法是當MCU完成一筆資料的接收後,硬體會自動將旗標設為1,
//配合EA=1的設定,便會執行相對應的串列副程式
{
RI=0; // 把RI變成0 在中斷中要手動清RI位址,RI置位表示接收完畢,允許下次接收
sbuf=SBUF; //讀取資料,把暫存器資料放到定義的 sbuf裡面 (SBUF是串列暫存器)
}
}
void delay(int count)
{
int i,j;
for(i=0;i<count;i++)
for(j=0;j<1000;j++)
;
}
void UARTOFF() //9600 RF關閉用
{
IE=0x82;
SCON=0x52;
TMOD=0x20;
TCON=0x69;
TH1=0xFD;
TR1=1;
ES=0; //這可以設定開與關,所以倘若把ES與EA設定成0,9600RF便會關起來
EA=0;
}
//=========================================//
JL8051 發表在 痞客邦 留言(0) 人氣(6,276)