昨天在群里面有一個網(wǎng)友提到51單片機使用printf為什么編譯通過了,但是沒有效果 。這里將我的筆記翻出來共享一下,這個實驗本身沒有太大的意義,主要是記錄51單片機應(yīng)該如何使用Printf函數(shù)。實驗名稱:串口通信之單片
想來想去不知道要怎么樣把232串口通信說清楚,想想還是直接把代碼分析一遍吧...重點是“常用波特率與定時器1的參數(shù)關(guān)系”這張表格!波特率的設(shè)置很重要!一、串口初始化void usart_init(){ SCON = 0x50; //
單片機每次發(fā)送或者接受完數(shù)據(jù)(8位數(shù)據(jù)將保存在緩沖區(qū)中),會自動觸發(fā)接受或者發(fā)送中斷。因此只需要中斷置位以后再緩沖區(qū)中讀數(shù)據(jù)(或者發(fā)送數(shù)據(jù))。1 /*************************************************2 *rece
在使用STC12C5608AD的PWM功能時,需要用到把PWM的占空比從0%調(diào)到100%,0%即低電平,100%即高電平。通過改變CCAP0H的值,可以調(diào)節(jié)占空比,按道理,當(dāng)CCAP0H的值為255時,占空比應(yīng)該為0,但是通過示波器發(fā)現(xiàn),還是有那
紅外遙控發(fā)射芯片采用PPM編碼方式,當(dāng)發(fā)射器按鍵按下后,將發(fā)射一組108ms的編碼脈沖。遙控編碼脈沖由前導(dǎo)碼、8位用戶碼、8位用戶碼的反碼、8位操作碼以及8位操作碼的反碼組成。通過對用戶碼的檢驗,每個遙控器只能控制
#includetypedefunsignedcharuchar;sbitADDR0=P1^0;sbitADDR1=P1^1;sbitADDR2=P1^2;sbitADDR3=P1^3;sbitENLED=P1^4;codeucharimage[5][8]={{0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF},//??¨?”???§0{0xFF,0xC3,0x
任何單片機,內(nèi)部都有寄存器,用來存儲數(shù)據(jù)和控制器件。51單片機的寄存器是8位的,用二進制表示就是00000000到11111111之間的數(shù)據(jù)。我們在學(xué)習(xí)51單片機,本質(zhì)上就是在學(xué)習(xí)它的寄存器。單片機的寄存器被放到內(nèi)部特定的
如下程序能實現(xiàn)ms毫秒級的比較精確的延時void Delayms(unsigned int n){ unsigned int i,j; for(j=n;j>0;j--) for(i=112;i>0;i--);}用keil可以看出這個延時的時間,我們先延時1ms(Delayms(1))。進入Delayms前
在這里介紹一下用51單片機驅(qū)動步進電機的方法。這款步進電機的驅(qū)動電壓12V,步進角為 7.5度 . 一圈 360 度 , 需要 48 個脈沖完成!!!該步進電機有6根引線,排列次序如下:1:紅色、2:紅色、3:橙色、4:棕色、5:黃色、6:
最近在基于51單片機編程的過程中出現(xiàn)了個很奇怪的問題“程序執(zhí)行中在寄存器EA=1,ET0=1,TR0=1條件下,單TF0=1時并沒有執(zhí)行中斷”。在有過單片機中斷編程經(jīng)歷者都知道當(dāng)EA=1,ET0=1的條件下,滿足TF0=1時,如果在
C代碼#include"my51.h"#include"smg.h"#include"ds18b20.h"voidmain()//測試,6位數(shù)碼管顯示溫度值{u8i=0;u16temp=0;while(1){temp=ds18b20_readTemperaData();for(i=0;i=1;//有效數(shù)據(jù)移動到最低位,2次寫數(shù)據(jù)間隙至少
STC的單片機一般都是1T型單片機,比傳統(tǒng)的單片機運行速度要快12倍左右。傳統(tǒng)的51單片機只有一個時鐘源,就是利用外部晶振,而stc51單片機除了可以用外部晶振,自己內(nèi)部還有一個時鐘源,由RC振蕩器實現(xiàn),精度沒有外部
這里主要是對使用keil環(huán)境下,提高51單片機軟件精度的問題給出自己的一點小看法,參閱了文章利用 Keil Cx51實現(xiàn)T0的精確定時,使用文章中的方法的確是可以提高軟件精度,可是一碰到中斷函數(shù)中語句較多,且main函
位與指令A(yù)NL C,bit ;CY與指定的位地址的值相與,結(jié)果送回CYANL C,/bit ;先將指定的位地址中的值取出后取反,再和CY相與,結(jié)果送回CY,但注意,指定的位地址中的值本身并不發(fā)生變化。例:ANL C,/P1.0設(shè)執(zhí)行本指令前,
STC單片機的內(nèi)部EEPROM是用DATAFLASH模擬出來的,不是真正的EEPROM存儲器,不能用普通的方法來操作下面是一些注意點:1.字節(jié)寫之前要先將這個字節(jié)所在扇區(qū)的其它有效數(shù)據(jù)讀取到RAM暫存(這步不是必須的)2.暫存完之后再對
除法指令:DIV AB此單片機指令的功能是將A中的8位無符號數(shù)除了B中的8位無符號數(shù)(A/B)。除法一般會出現(xiàn)小數(shù),但計算機中可沒法直接表達小數(shù),它用的是我們小學(xué)生還沒接觸到小數(shù)時用的商和余數(shù)的概念,如13/5,其商是
51內(nèi)核的最基礎(chǔ)的中斷源請求有外部中斷、定時器中斷和串口中斷,這也是學(xué)習(xí)和開發(fā)者最長用的。當(dāng)然還有其他的中斷源,比如ADC、SPI、PWM等。以外部中斷0為例,在編程中常使用的方式為:void INT0()interrupt 0 usin
1. 51單片機概述51單片機是對所有兼容Intel 8031指令系統(tǒng)的單片機的統(tǒng)稱。目前教科書基本都是以早期的MCS-51為原型,講解微機的原理及其接口技術(shù)的。早期的51單片機功能都較弱,需擴展rom,ram等才能組成一個較復(fù)雜的
/***********************************************頭文件名:LCD液晶驅(qū)動 ** Target : AT89s52** Crystal: 11.0952**********************************************/#ifndef _LCD_51_H_#define _LCD_51_H_#include
1、外部擴展存儲器時,當(dāng)做數(shù)據(jù)總線(如圖1中的D0~D7為數(shù)據(jù)總線接口)2、外部擴展存儲器時,當(dāng)作地址總線(如圖1中的A0~A7為地址總線接口)3、不擴展時,可做一般的I/O使用,但內(nèi)部無上拉電阻,作為輸入或輸出時應(yīng)在