Ïðèìåð: Ãëîáàëüíàÿ ñåòü INTERNET
ß èùó:
Íà ãëàâíóþ  |  Äîáàâèòü â èçáðàííîå  

Ãëàâíàÿ/

Ïðîãðàììèðîâàíèå, áàçû äàííûõ. /

Ñèñòåìíîå ïðîãðàììèðîâàíèå

←ïðåäûäóùàÿ ñëåäóþùàÿ→
1 2 3 4 5 6 7 8 9 10 11 12 13 ... 

³ ³Â/ ³ ³ ³ ³ÓÑÒÐ. ³

³ ³ ³ ³ ³ ³ ³ ³ ³ ³

³ ³ ³ ³ ³ ³ ³ ³ ³ ³

ÀÄÄÄÄÄÄÄÄÙ ÀÄÄÄÄÄÄÄÄÄÄÄÄÙ ÀÄÄÄÄÄÄÙ ÀÄÄÄÄÄÄÙ ÀÄÄÄÄÄÄÄÙ

ÚÄÄÄÄÄÄÄÄÄ¿

³ÑÈÑÒÅÌÀ ³

³ÏÐÅÐÛÂÀÍ.³

³ ³

ÀÄÄÄÄÄÄÄÄÄÙ

Ëåêöèÿ 10

Coçäaíèe çâóêa.

Ecëè Bû xoòèòe ïoëó÷èòü êaêèe-ëèáo cëoæíûe çâóêè, òo Bû äoëæíû ïpÿìo

ïpoãpaììèpoâaòü ìèêpocxeìó òaéìepa 8253. Kaíaë 2 ýòoé ìèêpocxeìû ïpÿìo

câÿçaí c äèíaìèêoì êoìïüþòepa. Koãäa ýòoò êaíaë ïpoãpaììèpóeòcÿ â

peæèìe 3, òo oí ïocûëaeò ïpÿìoóãoëüíûe âoëíû äaííoé ÷acòoòû. Èç-ça

ïpocòoòû äèíaìèêa oí cãëa- æèâaeò êpaÿ ïpÿìoóãoëüíoé âoëíû, ïoëó÷aÿ

áoëee ïpèÿòíóþ äëÿ cëóxa cèíócoèäaëüíóþ âoëíó. K coæaëeíèþ, ìèêpocxeìa

8253 íe ìoæeò ìe- íÿòü aìïëèòóäó âoëíû, ïoýòoìó ìû íe ìoæeì ìeíÿòü

ãpoìêocòü çâóêa, èçäaâaeìoão äèíaìèêoì.

Äèíaìèê èìeeò íe oäèí, a äâa âxoäa äëÿ ãeíepaöèè çâóêa. ×acòoòa èì-

ïóëücoâ êaæäoé ìèêpocxeìû ìoæeò áûòü èçìeíeía, ïoýòoìó êoìáèíèpóÿ

âoçäeécòâèÿ ýòèx äâóx ècòo÷íèêoâ ìû ìoæeì ïoëó÷aòü cïeöèaëüíûe çâóêoâûe

ýôôeêòû.

1. Ãeíepaöèÿ òoía.

Äëÿ ýòoão äocòaòo÷ío çaïpoãpaììèpo- âaòü ìèêpocxeìó òaéìepa 8253,

êoòopaÿ paáoòaeò íeçaâècèìo oò ïpoöeccopa. B ïpèâeäeííoì çäecü ìeòoäe

ïpoöeccop íeïocpeäcòâeíío óïpaâëÿeò äèíaìèêoì, ïoýòoìó ïpoãpaììe

ïpèxoäèòcÿ âûïoëíÿòü paáo- òó, êoòopóþ ìoæeò âûïoëíÿòü ìèêpocxeìa

òaéìepa. Xoòÿ ýòoò cïocoá áoëee òpóäeí, ío oí äoïócêaeò cóùecòâeíío

áoëüøèé êoíòpoëü íaä äèíaìèêoì è coçäaíèe áoëüøèícòâa cïeöèaëüíûx

çâóêoâûx ýôôeêòoâ ocíoâûâaeòcÿ ía íeì.

C(äo) 523.3

D(pe) 587.3

E(ìè) 659.3

F(ôa) 698.5

G(coëü) 784.0

A(ëÿ) 880.0

B(cè) 987.7

×acòoòû ía oêòaâó âûøe ìoæío ïoëó÷èòü, óäâaèâaÿ ýòè çía÷eíèÿ, ía äâe

oêòaâû âûøe - eùe paç óäâaèâaÿ ÷acòoòû. È íaoáopoò, ÷acòoòû ía oêòaâó

íèæe paâíû ïpèáëèçèòeëüío ïoëoâèíe ýòèx çía÷eíèé (xopo- øo íacòpoeííoe

ïèaíèío òo÷ío íe cëeäóeò apèôìeòè÷ecêèì èíòepâa- ëaì).

Hèçêèé ópoâeíü.

Ãeíepaöèÿ çâóêa c ïoìoùüþ aäaïòepa èíòepôeéca c ïepèôepèeé 8255

cocòoèò âo âêëþ÷eíèè è âûêëþ÷eíèè c æeëaeìoé ÷acòoòoé áèòa ïopòa B,

êoòopûé câÿçaí c äèíaìèêoì (áèò 1). Ïopò B èìeeò aäpec 61H (xoòÿ AT íe

èìeeò ìèêpocxeìû èíòepôeéca c ïepèôepèeé 8255 êaê òaêoâoé, oí ècïoëü-

çóeò äëÿ ýòoé öeëè òoò æe aäpec ïopòa è òoò æe áèò). Ecëè ïpoãpaììa

ïepeêëþ÷aeò çía÷eíèe áèòa c ìaêcèìaëüío âoçìoæíoé ÷acòoòoé, òo ÷acòoòa

cëèøêoì âûcoêaÿ, ÷òoáû áûòü ïoëeçíoé. Ïoýòoìó ìeæäó äâóìÿ ïepeêëþ÷eíèÿ-

ìè íaäo âcòaâëÿòü ïócòoé öèêë. Ïoìíèòe, ÷òo áèò 0 ïopòa B óïpaâëÿeò

âopoòaìè êaíaëa 2 ìèêpocxeìû òaéìepa, êoòopûé â câoþ o÷epeäü câÿçaí c

äèíaìèêoì. Ïoýòoìó ýòoò áèò äoëæeí áûòü cápoøeí, oòcoeäèíÿÿcü oò êaíaëa

òaéìepa.

B cëeäóþùeì ïpèìepe ââeäeíû äâe ïepeìeííûe. Oäía, oáoçía÷eííaÿ

"FREQUENCY", ècïoëüçóeòcÿ â êa÷ecòâe c÷eò÷èêa â ïócòoì öèêëe ìeæäó

äeécòâèÿìè âêëþ÷eíèÿ è âûêëþ÷eíèÿ. ×eì ìeíüøe ee çía÷eíèe, òeì áûcòpee

ïpoècxoäèò èçìeíeíèe áèòa è òeì áoëüøe ÷acòoòa. Ïepe- ìeííaÿ æe

"NUMBER_CYCLES" ócòaíaâëèâaeò ïpoäoëæèòeëüíocòü òoía. Oía ãoâopèò

cêoëüêo paç äoëæeí áûòü ïoâòopeí ïpoöecc âêëþ÷eíèÿ è âûêëþ÷eíèÿ. ×eì

áoëüøe ýòo ÷ècëo, òeì äoëüøe çâó÷èò äaííûé çâóê.

- 2 -

Oòìeòèì, ÷òo äëÿ ýòoé ïpoöeäópû aïïapaòíûe ïpepûâaíèÿ äoëæíû áûòü

çaïpeùeíû. Ïpè÷èía ýòoão â òoì, ÷òo ïpepûâaíèe òaéìepa ïpoècxoäèò c

òaêoé ÷acòoòoé è peãóëÿpíocòüþ (18.2 paça â ceêóíäó), ÷òo oío áóäeò

cóùecòâeíío âëèÿòü ía ÷acòoòó. Èìeéòe ââèäó, ÷òo ïoêa ïpepûâaíèÿ

çaïpeùeíû, c÷eò÷èê âpeìeíè cóòoê BIOS íe áóäeò paáoòaòü. Ecëè çaòeì

ïpo÷èòaòü eão çía÷eíèe, òo oío áóäeò oòëè÷aòücÿ ía íeêoòopóþ âeëè÷èíó

oò peaëüíoão, äo òex ïop, ïoêa íe áóäeò cäeëaío cooòâeòcòâóþùee

èçìeíeíèe.

NUMBER_CYCLES EQU 1000

FREQUENCY EQU 300

PORT_B EQU 61H

CLI ;çaïpeò ïpepûâaíèé

MOV DX,NUMBER_CYCLES ;äëèòeëüíocòü òoía â DX

IN AL,PORT_B ;ïoëó÷aeì çía÷eíèe èç ïopòa B

AND AL,11111110B ;oòêëþ÷aeì äèíaìèê oò òaéìepa

NEXT_CYCLE: OR AL,00000010B ;âêëþ÷aeì äèíaìèê

OUT PORT_B,AL ;ïocûëaeì êoìaíäó â ïopò B

MOV CX,FREQUENCY ;çaäepæêa ía ïoë-öèêëa â CX

FIRST_HALF: LOOP FIRST_HALF ;äeëaeì çaäepæêó

AND AL,11111101B ;âûêëþ÷aeì äèíaìèê

OUT PORT_B,AL ;ïocûëaeì êoìaíäó â ïopò B

MOV CX,FREQUENCY ;çaäepæêa ía ïoë-öèêëa â CX

SECOND_HALF: LOOP SECOND_HALF ;äeëaeì çaäepæêó

DEC DX ;âû÷èòaeì eäèíèöó èç c÷eò÷èêa

JNZ NEXT_CYCLE ;ecëè 0, òo íaäo êoí÷aòü

STI ;paçpeøaeì ïpepûâaíèÿ

2. Ãeíepaöèÿ çâóêa oäíoâpeìeíío c äpóãèìè äeécòâèÿìè.

Ïocêoëüêó ìèêpocxeìa òaéìepa 8253 paáoòaeò íeçaâècèìo oò

ïpoöeccopa, òo o÷eíü ïpocòo ãeíepèpoâaòü çâóê, êoòopûé èçäaeòcÿ

oäíoâpeìeíío c âûïoëíeíèeì äpóãèx oïepaöèé. Bû äoëæíû ïpocòo

çaïpoãpaììèpoâaòü êaíaë 2 ýòoé ìèêpocxeìû äëÿ ãeíepaöèè oïpeäeëeííoé

÷acòoòû, a çaòeì ïepeïpoãpaììèpoâaòü ìèêpocxeìó äëÿ âûêëþ÷eíèÿ çâóêa.

Hèçêèé ópoâeíü.

Mèêpocxeìa äoëæía áûòü ïpeäâapèòeëüío paçpeøeía ÷epeç ïopò B ìèêpocxeìû

èíòepôeéca c ïepèôepèeé 8255 (aäpec 61H). Bû÷ècëèòe òpeáóeìoe çía÷eíèe

c÷eò÷èêa äëÿ çaäâèæêè, paçäeëèâ 1.19 ìèëëèoíoâ ía òpeáóeìóþ ÷acòoòó â

ãepöax. Çâóê áóäeò ïpoäoëæaòücÿ äo òex ïop, ïoêa íe áóäóò çaêpûòû

âopoòa êaíaëa 2. Ïoýòoìó Bû äoëæíû cápocèòü áèò 1 ïopòa B â 0, èía÷e

çâóê áóäeò ïpoäoëæaòücÿ áecêo- íe÷ío è ìoæeò áûòü ïpeêpaùeí òoëüêo

ïepeçaãpóçêoé êoìïüþòepa. Äëÿ òo÷íoão peãóëèpoâaíèÿ äëèòeëüíocòè çâóêa

ìoæío ècïoëüçoâaòü c÷eò÷èê âpeìeíè cóòoê BIOS, êaê óêaçaío â [2.1.6]. B

äaííoì ïpèìepe ãeíepèpóeòcÿ ÷acòoòa 440 ãepö. Çâóê ïpeêpaùaeòcÿ ïocëe

íaæaòèÿ ëþáoé êëaâèøè ía êëaâèaòópe.

;---papeøeíèe êaíaëa 2 ócòaíoâêoé ïopòa B ìèêpocxeìû 8255

PORT_B EQU 61H ;ócòaíoâêa aäpeca ïopòa B

IN AL,PORT_B ;÷òeíèe eão çía÷eíèÿ

OR AL,3 ;ócòaíoâêa äâóx ìëaäøèx áèòoâ

OUT PORT_B,AL ;ïocûëaeì áaéò â ïopò B

;---ócòaíoâêa peãècòpoâ ââoäa/âûâoäa

COMMAND_REG EQU 43H ;aäpec êoìaíäíoão peãècòpa

CHANNEL_2 EQU 42H ;aäpec êaíaëa 2

MOV AL,10110110B ;öeïo÷êa áèòoâ äëÿ êaíaëa 2

OUT COMMAND_REG,AL ;çacûëêa â êoìaíäíûé peãècòp

←ïðåäûäóùàÿ ñëåäóþùàÿ→
1 2 3 4 5 6 7 8 9 10 11 12 13 ... 


Copyright © 2005—2007 «RefStore.Ru»