公告版位

沒有痛苦 就沒有收穫
若內容對你有幫助,可以留言讓我知道哦~
有問題想要諮詢可以請至這裡連絡我哦 =>不會就放這邊

 


目前分類:MCU (16)

瀏覽方式: 標題列表 簡短摘要

MCU reset 電路圖 for 8051  

MCU reset 可以使用兩種

1.左圖1 是上5V電源時,使用左邊的RC組合給一個reset訊號

文章標籤

JL8051 發表在 痞客邦 留言(0) 人氣()

輪詢(Polling): 

想像成老師在上課,老師每間隔一段時間就去問小明有沒有問題

這不僅浪費老師的時間,小明有疑問卻不能主動提出

文章標籤

JL8051 發表在 痞客邦 留言(0) 人氣()

Keil 編譯成功後會在 Build Output 事窗出現一條訊息:
Program Size: Code=5124 RO-data=696 RW-data=92 ZI-data=22316 
這條訊息可以計算出所使用的 Code Size 。

文章標籤

JL8051 發表在 痞客邦 留言(0) 人氣()

HEX文件和BIN文件格式的區別
1.HEX文件是包括地址信息的,而BIN文件格式只包括了數據本身
在燒寫或下載HEX文件的時候,一般都不需要用戶指定地址,因為HEX文件內部的信息已經包括了地址。而燒寫BIN文件的時候,用戶是一定需要指定地址信息的。

文章標籤

JL8051 發表在 痞客邦 留言(0) 人氣()

keilc 中可以執行script ,編譯結束後順便執行想要的bat檔案

如下圖的範例是,編譯完程式後可以執行123.bat檔案

這檔案或許是把bin檔做些處理,或是想要自動化些什麼事情.

JL8051 發表在 痞客邦 留言(0) 人氣()

偉詮電(2436)

https://www.104.com.tw/jobbank/custjob/index.php?r=cust&j=624a44245e46406738583a1d1d1d1d5f2443a363189j50

笙泉(3122)

文章標籤

JL8051 發表在 痞客邦 留言(0) 人氣()

待研究


文章標籤

JL8051 發表在 痞客邦 留言(0) 人氣()

Keilc可以在編譯的前後,執行window 的script "bat",

設定地方在下圖 Run User Program After Build/Rebuild,

要記得RUN要勾起來,

文章標籤

JL8051 發表在 痞客邦 留言(0) 人氣()

一個機械週期在 MCS-51 的規範裡指的是振盪器振盪 12 次
所以 假設我們在電路設計上使用了 12M 的石英振盪器(也就是一秒鐘振盪 12 百萬次),每振盪 12 次代表一個機械週期,那麼一個機械週期所要花費的時間就是 1 uS.

JL8051 發表在 痞客邦 留言(0) 人氣()

#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) 人氣()

8051的鮑率設定和程式碼一定都把他設定成可蘭經來讀了吧,不過有時候時間久了還是會遺忘,我就在這邊做個整理

 

1.RS232 UART的一些觀念

文章標籤

JL8051 發表在 痞客邦 留言(2) 人氣()

中斷:三個重要暫存器

IE (中斷致能):一定要設定

IP(中斷優先):視情況設定

文章標籤

JL8051 發表在 痞客邦 留言(0) 人氣()

可能


文章標籤

JL8051 發表在 痞客邦 留言(0) 人氣()

74L165介紹

 

74L165並行輸入,串行輸出移位暫存器,C51單片機內部的串列口在方式0工作狀態下,使用移位寄存器晶片可以擴展一個或多個8位並行I/O口。其引腳如圖所示。

JL8051 發表在 痞客邦 留言(0) 人氣()

七段顯示器二位

程式碼

//於七段顯示器顯示二位數計數


#include "reg51.h"
sbit x1=P3^0;
sbit x2=P1^0;

int a=2000,k=0; //0.5秒=2000*250us
int b,c;
unsigned char font[61] = {0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x10,
0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x20,
0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,0x30,
0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x40,
0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x50,
0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x60};
char seg[6]={0x01,0x4f,0x12,0x06,0x4c,0x24};

int d, bcd[2];
unsigned char i;

main()
{

TMOD = 0x03;
TH0 = (256-250);
TL0 = (256-250);
TR0 = 1; //啟動計時器
IE = 0x82; //啟動Timer0中斷

bcd[0]=P1/10;
bcd[1]=P1%10;
d=bcd[0]*10+bcd[1];
x1=1;
while(1);

}




void scan_7seg() interrupt 1 //Timer0中斷程式(中斷向量1)
{ if (--a==0)
{
a=2000;

if (x1==0) //控制用
{

P0=seg[k++];
}



P2 = font[d--];

if (d==0)
while(1);
}

}
文章標籤

JL8051 發表在 痞客邦 留言(0) 人氣()

七段顯示器顯示1位數計數

上數0-9

//==========================//

#include "reg51.h"
int a=2000; //0.5秒=2000*250us
unsigned char font[11] = {0x01,0x4F,0x12,0x06,0x4C,0x24,0x60,0x0F,0x00,0x0C}; //0~9之7段顯示器顯示字型內容

unsigned char i,scan;
unsigned char led_buffer[2];

void delay(char count);

void main(void)
{

TMOD = 0x03;
TH0 = (256-250);
TL0 = (256-250);
TR0 = 1; //啟動計時器
IE = 0x82; //啟動Timer0中斷
// scan = 0;
while(1);

}




void scan_7seg() interrupt 1 //Timer0中斷程式(中斷向量1)
{ if (--a==0)
{
a=2000;
P0 = font[scan++];
if(scan==10) //判斷是否到第2位數,如果是則歸0
{
scan=0;
}
}

}

JL8051 發表在 痞客邦 留言(0) 人氣()