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