公告版位
沒有痛苦 就沒有收穫
若內容對你有幫助,可以留言讓我知道哦~
有問題想要諮詢可以請至這裡連絡我哦 =>不會就放這邊
目前分類:MCU (16)
- Jun 18 Fri 2021 08:45
【8051】重置電路圖
- Sep 24 Tue 2019 13:49
【MCU】輪詢和中斷觀念
- Apr 18 Thu 2019 09:08
Keil - Program Size訊息含意 Code、RO-data、RW-data、ZI-data
Keil 編譯成功後會在 Build Output 事窗出現一條訊息:
Program Size: Code=5124 RO-data=696 RW-data=92 ZI-data=22316
這條訊息可以計算出所使用的 Code Size 。
- Apr 18 Thu 2019 09:04
KeilC - Hex檔與bin檔的差異
HEX文件和BIN文件格式的區別
1.HEX文件是包括地址信息的,而BIN文件格式只包括了數據本身
在燒寫或下載HEX文件的時候,一般都不需要用戶指定地址,因為HEX文件內部的信息已經包括了地址。而燒寫BIN文件的時候,用戶是一定需要指定地址信息的。
- Aug 10 Fri 2018 09:59
Keilc 中執行.bat script
keilc 中可以執行script ,編譯結束後順便執行想要的bat檔案
如下圖的範例是,編譯完程式後可以執行123.bat檔案
這檔案或許是把bin檔做些處理,或是想要自動化些什麼事情.
- Apr 06 Fri 2018 02:07
MCU公司整理
- Mar 14 Wed 2018 16:59
[通用MCU] watchdog timer 定義
待研究
- Jul 26 Wed 2017 11:55
【教學】KeilC編譯前後執行bat執行檔
Keilc可以在編譯的前後,執行window 的script "bat",
設定地方在下圖 Run User Program After Build/Rebuild,
要記得RUN要勾起來,
- Oct 30 Thu 2014 01:51
[8051] 時間的概念
一個機械週期在 MCS-51 的規範裡指的是振盪器振盪 12 次
所以 假設我們在電路設計上使用了 12M 的石英振盪器(也就是一秒鐘振盪 12 百萬次),每振盪 12 次代表一個機械週期,那麼一個機械週期所要花費的時間就是 1 uS.
- Nov 12 Tue 2013 13:59
8051 UART C 範例程式
#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; } //=========================================//
- Nov 11 Mon 2013 22:19
[8051] UART資料 鮑率設定
- Nov 09 Sat 2013 13:32
[8051] 中斷相關整理
- Oct 23 Wed 2013 22:54
[IDE] keil ARM 燒入進去後不能動作的可能因素
- Oct 23 Wed 2013 22:52
[8051] UART0 74L165和8051控制 實作
- Aug 17 Wed 2011 02:03
[8051] 七段顯示器二位數程式碼
七段顯示器二位
程式碼
//於七段顯示器顯示二位數計數 #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); } }
- Aug 17 Wed 2011 02:02
[8051]七段顯示器顯示1位數計數
七段顯示器顯示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; } } }