1樓:匿名使用者
使用兩個定時器或一個定時器中使用兩個計數都能滿足你的要求。
建議使用一個定時器和一個計數器即可,如計數器為i,則if(i%測溫定時==0)
溫度測量();
if(i%步進電機定時==0)
步進電機控制();
注:此時要求兩個控制模組的定時步長是一致,比如都是1ms
2樓:匿名使用者
設定一個比較小的定時間隔,例如1ms,用靜態變數累加,比如步機電機是10ms觸發一次,測溫是1s觸發一次
void timerisr(void)
if (++tempcnt == 1000)}
3樓:匿名使用者
最簡單的方法:52有三個定時器,多個定時器2
還有一種方法是定時器複用,減小定時器初值,設兩個不同變數自加,分別控制測溫和數碼管的顯示
4樓:匿名使用者
贊同樓上songsheping的做法。或者可以直接i==xx判斷也可以~
5樓:匿名使用者
用同一個定時器, 加兩個時間計數器來計數, 當計數滿足要求時控制溫度或者步進電機.
6樓:匿名使用者
儘量不要用定時器中斷的,我感覺可以用軟體延時試試,呵呵,這樣就簡單了,
7樓:匿名使用者
請問你的微控制器還需要與其它裝置(如,上位機)進行序列通訊嗎?如果不需要選用52系列的微控制器就可以滿足了(t0、t1、t2三個定時器)。
或者ds18b20不用定時器(不用串列埠),用普通i/o(如,p1.0)口程式設計,控制ds18b20、讀取資料,可以省出1個定時器,用51系列微控制器可以滿足。我經常這樣用的。
8樓:匿名使用者
用不同的定時器就行了
9樓:匿名使用者
嗯 三樓說的對 我這樣做過
微控制器c語言程式設計
10樓:皋美媛通辰
ds1302裡的時間是以bcd碼形式存放的。當你程式設計要把資料存在ds1302裡時
,通常要將之轉化為bcd碼。如:(x/10)<<4|(x%10),
x代表十進位制數,(x/10)<<4
|(x%10)這個就能直接寫入ds1302了
11樓:匿名使用者
key4 equ 30h
key2 equ 31h
org 0000h
ljmp main
org 0030h
main:
clr ea
mov sp,#5fh
mov key2,#0
mov key4,#0
loop:
jb p1.0,loop
mov r7,#10
lcall delay
jb p1.0,loop
jnb p1.0,$
mov p3,#0c0h
loop0:
lcall keydeal
mov a,key4
jnz loop41
mov a,p3
anl a,#0f0h
orl a,#0eh
mov p3,a
sjmp loop21
loop41:
dec a
jnz loop42
mov a,p3
anl a,#0f0h
orl a,#0dh
mov p3,a
sjmp loop21
loop42:
dec a
jnz loop43
mov a,p3
anl a,#0f0h
orl a,#0bh
mov p3,a
sjmp loop21
loop43:
dec a
jnz loop21
mov a,p3
anl a,#0f0h
orl a,#07h
mov p3,a
loop21:
mov a,key2
jnz loop22
mov a,p3
anl a,#0fh
orl a,#20h
mov p3,a
sjmp loop3
loop22:
dec a
jnz loop3
mov a,p3
anl a,#0fh
orl a,#10h
mov p3,a
loop3:
ljmp loop0
;----------------------------delay:
mov r2,#2
dly1:
mov r3,#250
djnz r3,$
djnz r2,dly1
djnz r7,delay
ret;-----------------------------keydeal:
jb p1.1,keyen1
mov r7,#10
lcall delay
jb p1.1,keyen1
jnb p1.1,$
inc key4
mov a,key4
anl a,#03h
mov key4,a
keyen1:
jb p1.2,keyen2
mov r7,#10
lcall delay
jb p1.2,keyen2
jnb p1.2,$
inc key2
mov a,key2
anl a,#01h
mov key2,a
keyen2:
ret;-----------------------------end
12樓:匿名使用者
初始化燈滅,設為00。先進行按鍵的讀取,一個按鍵控制開關,就先判斷是否按下開關鍵,沒有的話就不執行,直到按下,執行下面的語句。再進行按鍵的讀取,如果按下控制4個led燈的鍵,那就先賦初值0001,點亮一個燈,再用左移或是右移,迴圈點亮4個燈;如果按下控制2個led燈的按鍵,就按一下相應位置1,也可以設初值01,進行左移或是右移,同時也要判斷是否按下開關鍵,如果按下就退出當前語句,返回至初始的按鍵讀取
13樓:馭風者楊
這個不難實現,利用獨立按鍵和流水燈的知識可以做的。試試看。
求一個51微控制器c語言程式程式設計 30
51微控制器c語言程式設計
14樓:清風
不用ic亮度可能達不到要求,51微控制器的io口驅動電流不夠
15樓:
你的設計有點問題,不過你看下這個程式對你應該有幫助。
#include
#define int8 unsigned char#define int16 unsigned int#define int32 unsigned longint8 flag;
int8 n;
int8 code table[32]=,/* " " */,/*"歡",0*/
,/*"迎",1*/
,/*"您",2*/
,/*"乘",3*/
,/*"坐",4*/
,/*"廣",5*/
,/*"州",6*/
,/*"三",7*/
,/*"汽",8*/
,/*"公",9*/
,/*"司",10*/
,/*"公",11*/
,/*"共",12*/
,/*"汽",13*/
,/*"車",14*/
,/*",",15*/
,/*"大",16*/
,/*"學",17*/
,/*"城",18*/
,/*"2",0*/
,/*"線",19*/
,/*"開",20*/
,/*"往",21*/
,/*"大",22*/
,/*"學",23*/
,/*"城",24*/
,/*",",25*/
,/*"請",26*/
,/*"您",27*/
,/*"坐",28*/
,/*"好",29*/
,/*"扶",30*/
,/*"穩",31*/
,/*"!",32*/
/* " " */
};void delay(void);
int16 offset;
void main(void)
for (i=8;i<16;i++) //顯示右半邊螢幕}}void delay(void)
void timer0() interrupt 1 using 3else}
求51微控制器c語言程式設計?
微控制器C語言程式設計,微控制器C語言程式設計題
按你的程式的結構,不做大的變動,又能理解的方法 四個程式合併成一個,當然就只能有一個主程式了,一個while 1 了,凡是while 1 以上的程式只保留一個就行了。四個程式的while 1 以下的都合併寫在一個while 1 下面,分為四段。有四個按鍵,判斷按鍵被按下的程式會寫吧?那判斷每個按鍵的...
C 微控制器高手,微控制器為什麼不用C 語言程式設計呢
相信很多初學者都有同樣的疑問,也有同樣的希望。就是用c 語言來寫微控制器程式的源 現在我來解釋一下微控制器的源 程式幾乎沒有人用c 來寫的。1.假設一下你現在用c 寫完了一個程式 那麼你要讓微控制器認識必須要編譯吧,對吧 請問你有合適的編譯軟體來編譯你的 嗎?2.就算有編譯器能編譯,你能保證它的 效...
51微控制器c語言程式設計標頭檔案的問題
矮子根 不知你是怎麼弄的,我照你的樣式重複了一遍也沒有報錯,請照下圖認真檢查 另外注意 你在兩個檔案裡定義的beep 和 beep 是不一樣的,這才是錯誤的原因。 這個告警是告訴你沒有實現函式吧。你應該把這個函式的主體在.c裡實現。 微控制器的戰鬥機 你看看定義的函式名一樣嗎? 對於c語言的標頭檔案...