性无码一区二区三区在线观看,少妇被爽到高潮在线观看,午夜精品一区二区三区,无码中文字幕人妻在线一区二区三区,无码精品国产一区二区三区免费

  • 回復(fù)
  • 收藏
  • 點(diǎn)贊
  • 分享
  • 發(fā)新帖

請(qǐng)教在單片機(jī)中如何看CPU的資源

因?yàn)樵诳磿臅r(shí)候,看到了這樣一句話【單片機(jī)的案件處理子程序應(yīng)該盡可能少占用CPU的運(yùn)行時(shí)間,并且盡可能將鍵盤掃描安排在程序空余的時(shí)間,以滿足實(shí)時(shí)準(zhǔn)確響應(yīng)按鍵請(qǐng)求的目的】

大家怎么看?

全部回復(fù)(30)
正序查看
倒序查看
daylight
LV.4
2
2014-02-19 20:41
單片機(jī)無系統(tǒng)時(shí)理論上應(yīng)該是100%工作的,非要算空閑時(shí)間的話,就是所有延時(shí)程序
0
回復(fù)
matou
LV.3
3
2014-02-19 20:42
沒有操作系統(tǒng)何來CPU 資源,除了在休眠,其他都是在全速運(yùn)行
0
回復(fù)
heal
LV.3
4
2014-02-19 20:44
@matou
沒有操作系統(tǒng)何來CPU資源,除了在休眠,其他都是在全速運(yùn)行

能說詳細(xì)一點(diǎn)嗎?

0
回復(fù)
matou
LV.3
5
2014-02-19 20:45
@heal
能說詳細(xì)一點(diǎn)嗎?
空余時(shí)間就是CPU 做完了要做的事,通過延時(shí)或空循環(huán)等待任務(wù)的時(shí)間,這時(shí)候安排CPU 做別的事就不會(huì)影響其他任務(wù)
0
回復(fù)
heal
LV.3
6
2014-02-19 20:47
@matou
空余時(shí)間就是CPU做完了要做的事,通過延時(shí)或空循環(huán)等待任務(wù)的時(shí)間,這時(shí)候安排CPU做別的事就不會(huì)影響其他任務(wù)
那我怎樣才能知道,什么時(shí)候CPU做完了事情,我什么時(shí)候才可以安排CPU去做其他事情,這個(gè)“什么時(shí)候”我從何得知?
0
回復(fù)
matou
LV.3
7
2014-02-19 20:48
@heal
那我怎樣才能知道,什么時(shí)候CPU做完了事情,我什么時(shí)候才可以安排CPU去做其他事情,這個(gè)“什么時(shí)候”我從何得知?
單片機(jī)有沒有在做事情完全是按你的程序來的啊

 

0
回復(fù)
stony_s
LV.3
8
2014-02-19 20:50
cpu一直全速運(yùn)行,又不是操作系統(tǒng)的阿
0
回復(fù)
for_real
LV.3
9
2014-02-19 20:51
文章中的意思,我沒有理解錯(cuò)的話,應(yīng)該是盡量減少子程序的占用時(shí)間,保證鍵盤掃描函數(shù)能在主函數(shù)的一個(gè)運(yùn)行周期內(nèi)有充分的時(shí)間來響應(yīng)。這種設(shè)計(jì)方式不太好
0
回復(fù)
pirate
LV.4
10
2014-02-19 20:57
@for_real
文章中的意思,我沒有理解錯(cuò)的話,應(yīng)該是盡量減少子程序的占用時(shí)間,保證鍵盤掃描函數(shù)能在主函數(shù)的一個(gè)運(yùn)行周期內(nèi)有充分的時(shí)間來響應(yīng)。這種設(shè)計(jì)方式不太好
支持樓上,如果你子程序不是寫成中斷的話,占用時(shí)間長(zhǎng)就會(huì)影響你繼續(xù)操作。就會(huì)操作無響應(yīng),因?yàn)槠渌逻€沒干完
0
回復(fù)
for_real
LV.3
11
2014-02-19 20:59
@pirate
支持樓上,如果你子程序不是寫成中斷的話,占用時(shí)間長(zhǎng)就會(huì)影響你繼續(xù)操作。就會(huì)操作無響應(yīng),因?yàn)槠渌逻€沒干完
個(gè)人一直傾向于講鍵盤掃描這樣的函數(shù)利用中斷完成響應(yīng)

 

0
回復(fù)
heal
LV.3
12
2014-02-19 21:00
@for_real
個(gè)人一直傾向于講鍵盤掃描這樣的函數(shù)利用中斷完成響應(yīng) 
鍵盤怎么中斷呢?中斷是哪個(gè)呢?是外部中斷嗎?

 

0
回復(fù)
for_real
LV.3
13
2014-02-19 21:02
@heal
鍵盤怎么中斷呢?中斷是哪個(gè)呢?是外部中斷嗎? 
如果是獨(dú)立鍵盤,用外部中斷自然最好?,F(xiàn)在不大用51了,一般用430,它是支持IO口中斷的,內(nèi)部也有AD,中斷采樣。在要求不高的應(yīng)用里,我一般會(huì)用四個(gè)獨(dú)立按鍵,使用IO口中斷,或者矩陣鍵盤采用IO口中斷,有時(shí)也會(huì)用AD鍵盤,用AD采樣中斷來完成交互.

 

0
回復(fù)
heal
LV.3
14
2014-02-19 21:03
@for_real
如果是獨(dú)立鍵盤,用外部中斷自然最好?,F(xiàn)在不大用51了,一般用430,它是支持IO口中斷的,內(nèi)部也有AD,中斷采樣。在要求不高的應(yīng)用里,我一般會(huì)用四個(gè)獨(dú)立按鍵,使用IO口中斷,或者矩陣鍵盤采用IO口中斷,有時(shí)也會(huì)用AD鍵盤,用AD采樣中斷來完成交互. 

謝謝哈

0
回復(fù)
soap泡泡
LV.4
15
2014-02-19 21:05
普通的51單片機(jī)在12m晶振下每ms大約可以執(zhí)行500條指令普通的指令,假如你的中斷里的程序大于500條,而且中斷發(fā)生的間隔時(shí)間小于1ms,那么單片機(jī)就只能執(zhí)行中斷程序不能執(zhí)行其他程序
0
回復(fù)
heal
LV.3
16
2014-02-19 21:07
@soap泡泡
普通的51單片機(jī)在12m晶振下每ms大約可以執(zhí)行500條指令普通的指令,假如你的中斷里的程序大于500條,而且中斷發(fā)生的間隔時(shí)間小于1ms,那么單片機(jī)就只能執(zhí)行中斷程序不能執(zhí)行其他程序
程序執(zhí)行 軟件延遲的程序的時(shí)候,CPU在干嘛??? 在軟件延遲的那段時(shí)間里,CPU能處理其他事情嗎?
0
回復(fù)
soap泡泡
LV.4
17
2014-02-19 21:10
@heal
程序執(zhí)行軟件延遲的程序的時(shí)候,CPU在干嘛???在軟件延遲的那段時(shí)間里,CPU能處理其他事情嗎?
軟件延時(shí)時(shí),cpu在執(zhí)行軟件延時(shí)程序,如果這時(shí)你還想讓cpu執(zhí)行別的程序,那么會(huì)影響延時(shí)時(shí)間
0
回復(fù)
2014-02-19 21:11
@heal
程序執(zhí)行軟件延遲的程序的時(shí)候,CPU在干嘛???在軟件延遲的那段時(shí)間里,CPU能處理其他事情嗎?
不能吧,cpu就在執(zhí)行延時(shí)程序,別的它干不了
0
回復(fù)
heal
LV.3
19
2014-02-19 21:14
做了一個(gè)電子鐘, 結(jié)果鬧鈴響放音樂的時(shí)候,數(shù)字時(shí)鐘就不顯示了
0
回復(fù)
soap泡泡
LV.4
20
2014-02-22 22:47
@heal
做了一個(gè)電子鐘,結(jié)果鬧鈴響放音樂的時(shí)候,數(shù)字時(shí)鐘就不顯示了
程序的調(diào)度做的不好
0
回復(fù)
heal
LV.3
21
2014-02-22 22:49
@heal
做了一個(gè)電子鐘,結(jié)果鬧鈴響放音樂的時(shí)候,數(shù)字時(shí)鐘就不顯示了

我是用中斷實(shí)行音樂播放。設(shè)備是51單片機(jī)。

這里,我將秒表和音樂播放放在一起。運(yùn)行的時(shí)候發(fā)現(xiàn)有很刺耳的聲音(不是音樂),同時(shí)數(shù)碼管不顯示時(shí)鐘,嗯鍵盤也完全沒有作用。

Break2:

PUSH PSW

PUSH ACC ;保護(hù)現(xiàn)場(chǎng)

MOVTL1,#000H;賦計(jì)數(shù)初值,每10ms中斷一次

MOVTH1,#0DCH

DJNZ 61H,back1 ;10毫秒未到,返回 ,61的初值為#01H

JBCounState,COUNT

JBAlarmRing1,MUSIC1

LJMP return1

COUNT:

MOV 61H,#01H ;61H存放中斷次數(shù)

MOV A,#01H

ADD A,35H

MOV 35H,A

JBAlarmRing1,MUSIC1

CJNE A,#64H,back1 ;是否到達(dá)100個(gè)10毫秒,沒有則返回

MOV 35H,#00H ;毫秒位清零

MOV A,#01H

ADD A,36H ;秒位加1

MOV 36H,A

CJNE A,#3CH,back1 ;60秒到了沒有

MOV 36H,#00H ;秒位清零

MOV A,#01H

ADD A,37H ;小時(shí)位加1

MOV 37H,A

back1: LJMP return1 ;返回

return1:

POP ACC

POP PSW ;恢復(fù)現(xiàn)場(chǎng)

RETI ;中斷返回

//delay1:

//push 07h ;2毫秒延遲

//push 06h

//MOV R7,#1EH

//DE1: MOV R6,#1FH

//D21: DJNZ R6,$

//DJNZ R7,DE1

//pop 06H

//pop 07H

//RET

;============================================================================================

0
回復(fù)
heal
LV.3
22
2014-02-22 22:49
@heal
我是用中斷實(shí)行音樂播放。設(shè)備是51單片機(jī)。這里,我將秒表和音樂播放放在一起。運(yùn)行的時(shí)候發(fā)現(xiàn)有很刺耳的聲音(不是音樂),同時(shí)數(shù)碼管不顯示時(shí)鐘,嗯鍵盤也完全沒有作用。Break2:PUSHPSWPUSHACC;保護(hù)現(xiàn)場(chǎng)MOVTL1,#000H;賦計(jì)數(shù)初值,每10ms中斷一次MOVTH1,#0DCHDJNZ61H,back1;10毫秒未到,返回,61的初值為#01HJBCounState,COUNTJBAlarmRing1,MUSIC1LJMPreturn1COUNT:MOV61H,#01H;61H存放中斷次數(shù)MOVA,#01HADDA,35HMOV35H,AJBAlarmRing1,MUSIC1CJNEA,#64H,back1;是否到達(dá)100個(gè)10毫秒,沒有則返回MOV35H,#00H;毫秒位清零MOVA,#01HADDA,36H;秒位加1MOV36H,ACJNEA,#3CH,back1;60秒到了沒有MOV36H,#00H;秒位清零MOVA,#01HADDA,37H;小時(shí)位加1MOV37H,Aback1:LJMPreturn1;返回return1:POPACCPOPPSW;恢復(fù)現(xiàn)場(chǎng)RETI;中斷返回//delay1://push07h;2毫秒延遲//push06h//MOVR7,#1EH//DE1:MOVR6,#1FH//D21:DJNZR6,$//DJNZR7,DE1//pop06H//pop07H//RET;============================================================================================

MUSIC1:

NOP

MOV DPTR,#MDAT ;表頭地址送DPTR

INC62H

MOV B,#00H ;表序號(hào)清0

MUSIC1_1:

NOP

CLR A

MOVCA,@A+DPTR ;查表取代碼

JZ END1_0 ;是00H,則結(jié)束

CJNEA,#0FFH,MUSIC1_5

LJMP MUSIC1_3

MUSIC1_5:

NOP

MOV 63H,A ;取音符代碼送63H

INCDPTR

MOV A,B

MOVC A,@A+DPTR ;取節(jié)拍代碼送64H

MOV 64H,A

MUSIC1_2:

NOP

CPL P1.6

MOV A,63H

MOV R3,A

LCALL MDEL1_0 ;最大一次是2毫秒

AJMPMUMIAO

MUSIC1_3:

NOP

//CLR TR0 ;休止100毫秒

SETBP1.6

INC DPTR

//MOVA,#7DH ;休止500毫秒

MOV A,B

MOVC A,@A+DPTR ;取節(jié)拍代碼送64H

MOV 64H,A

MUMIAO:

MOVA,35H

CJNE A,#64H,MUSIC1_2_0 ;是否到達(dá)100個(gè)10毫秒,沒有則MUSIC1_2_0

MOV 35H,#00H ;毫秒位清零

MOV A,#01H

ADD A,36H ;秒位加1

MOV 36H,A

CJNE A,#3CH,MUSIC1_2_0 ;60秒到了沒有

MOV 36H,#00H ;秒位清零

MOV A,#01H

ADD A,37H ;小時(shí)位加1

MOV 37H,A

MUSIC1_2_0:

MOV A,64H

CJNE A,62H,MUSIC1_2 ;中斷計(jì)數(shù)器(20H)=R7否?;不等,則繼續(xù)循環(huán)

//LJMP MUSIC1_4

//MOV R3,A

//LCALL MDEL1_0

MUSIC1_4:

MOV 62H,#00H ;等于,則取下一代碼

MOV 63H,#00H ;存入音樂音符 清零

MOV 64H,#00H ;存入音樂節(jié)拍 清零

INC DPTR

LJMP MUSIC1_1

END1_0:

NOP

SETBP1.6

CLRAlarmRing1

AJMPreturn2

MDEL1_0:

MOV R4,#02H ;延遲(2+13*R3)*1.09=

NOP

DJNZ R4,$

NOP

DJNZ R3,MDEL1_0

RET

NOP

return2:

POP ACC

POP PSW ;恢復(fù)現(xiàn)場(chǎng)

RETI ;中斷返回

MDAT:

DB2DH,30H,2DH,10H,28H,40H,2DH,40H,22H,40H,24H,80H

DB2DH,30H,2DH,10H,28H,40H,2DH,40H,1EH,40H,22H,80H

DB2DH,30H,2DH,10H,16H,40H,1BH,40H,22H,40H,24H,40H,28H,40H,0FFH,10H

DB19H,30H,19H,10H,1BH,40H,22H,40H,1EH,40H,22H,80H

DB00H

0
回復(fù)
close3
LV.5
23
2014-02-22 22:53
@heal
MUSIC1:NOPMOVDPTR,#MDAT;表頭地址送DPTRINC62HMOVB,#00H;表序號(hào)清0MUSIC1_1:NOPCLRAMOVCA,@A+DPTR;查表取代碼JZEND1_0;是00H,則結(jié)束CJNEA,#0FFH,MUSIC1_5LJMPMUSIC1_3MUSIC1_5:NOPMOV63H,A;取音符代碼送63HINCDPTRMOVA,BMOVCA,@A+DPTR;取節(jié)拍代碼送64HMOV64H,AMUSIC1_2:NOPCPLP1.6MOVA,63HMOVR3,ALCALLMDEL1_0;最大一次是2毫秒AJMPMUMIAOMUSIC1_3:NOP//CLRTR0;休止100毫秒SETBP1.6INCDPTR//MOVA,#7DH;休止500毫秒MOVA,BMOVCA,@A+DPTR;取節(jié)拍代碼送64HMOV64H,AMUMIAO:MOVA,35HCJNEA,#64H,MUSIC1_2_0;是否到達(dá)100個(gè)10毫秒,沒有則MUSIC1_2_0MOV35H,#00H;毫秒位清零MOVA,#01HADDA,36H;秒位加1MOV36H,ACJNEA,#3CH,MUSIC1_2_0;60秒到了沒有MOV36H,#00H;秒位清零MOVA,#01HADDA,37H;小時(shí)位加1MOV37H,AMUSIC1_2_0:MOVA,64HCJNEA,62H,MUSIC1_2;中斷計(jì)數(shù)器(20H)=R7否?;不等,則繼續(xù)循環(huán)//LJMPMUSIC1_4//MOVR3,A//LCALLMDEL1_0MUSIC1_4:MOV62H,#00H;等于,則取下一代碼MOV63H,#00H;存入音樂音符清零MOV64H,#00H;存入音樂節(jié)拍清零INCDPTRLJMPMUSIC1_1END1_0:NOPSETBP1.6CLRAlarmRing1AJMPreturn2MDEL1_0:MOVR4,#02H;延遲(2+13*R3)*1.09=NOPDJNZR4,$NOPDJNZR3,MDEL1_0RETNOPreturn2:POPACCPOPPSW;恢復(fù)現(xiàn)場(chǎng)RETI;中斷返回MDAT:DB2DH,30H,2DH,10H,28H,40H,2DH,40H,22H,40H,24H,80HDB2DH,30H,2DH,10H,28H,40H,2DH,40H,1EH,40H,22H,80HDB2DH,30H,2DH,10H,16H,40H,1BH,40H,22H,40H,24H,40H,28H,40H,0FFH,10HDB19H,30H,19H,10H,1BH,40H,22H,40H,1EH,40H,22H,80HDB00H
一上來就匯編?匯編可是最接近CPU的
0
回復(fù)
heal
LV.3
24
2014-02-22 22:54
@close3
一上來就匯編?匯編可是最接近CPU的
所以才難
0
回復(fù)
close3
LV.5
25
2014-02-22 23:00
@close3
一上來就匯編?匯編可是最接近CPU的
CPU是單片機(jī)里面的一個(gè)元器件,它的作用就是讀取你的代碼去執(zhí)行
0
回復(fù)
close3
LV.5
26
2014-02-22 23:00
@close3
CPU是單片機(jī)里面的一個(gè)元器件,它的作用就是讀取你的代碼去執(zhí)行
人腦有思考和記憶的功能,CPU就是電腦的思考功能
0
回復(fù)
close3
LV.5
27
2014-02-22 23:02
@soap泡泡
軟件延時(shí)時(shí),cpu在執(zhí)行軟件延時(shí)程序,如果這時(shí)你還想讓cpu執(zhí)行別的程序,那么會(huì)影響延時(shí)時(shí)間

同意樓上

0
回復(fù)
elio
LV.2
28
2014-02-22 23:04
@soap泡泡
普通的51單片機(jī)在12m晶振下每ms大約可以執(zhí)行500條指令普通的指令,假如你的中斷里的程序大于500條,而且中斷發(fā)生的間隔時(shí)間小于1ms,那么單片機(jī)就只能執(zhí)行中斷程序不能執(zhí)行其他程序
0
回復(fù)
elio
LV.2
29
2014-02-22 23:05
@heal
那我怎樣才能知道,什么時(shí)候CPU做完了事情,我什么時(shí)候才可以安排CPU去做其他事情,這個(gè)“什么時(shí)候”我從何得知?

多看看書啊

0
回復(fù)
elio
LV.2
30
2014-02-22 23:06
@for_real
如果是獨(dú)立鍵盤,用外部中斷自然最好。現(xiàn)在不大用51了,一般用430,它是支持IO口中斷的,內(nèi)部也有AD,中斷采樣。在要求不高的應(yīng)用里,我一般會(huì)用四個(gè)獨(dú)立按鍵,使用IO口中斷,或者矩陣鍵盤采用IO口中斷,有時(shí)也會(huì)用AD鍵盤,用AD采樣中斷來完成交互. 
高手
0
回復(fù)
backin
LV.4
31
2014-02-22 23:07
@heal
做了一個(gè)電子鐘,結(jié)果鬧鈴響放音樂的時(shí)候,數(shù)字時(shí)鐘就不顯示了

放出來看看啊

0
回復(fù)
發(fā)