北邮微机原理与接口技术3.docx

上传人:b****4 文档编号:5404535 上传时间:2022-12-16 格式:DOCX 页数:29 大小:620.48KB
下载 相关 举报
北邮微机原理与接口技术3.docx_第1页
第1页 / 共29页
北邮微机原理与接口技术3.docx_第2页
第2页 / 共29页
北邮微机原理与接口技术3.docx_第3页
第3页 / 共29页
北邮微机原理与接口技术3.docx_第4页
第4页 / 共29页
北邮微机原理与接口技术3.docx_第5页
第5页 / 共29页
点击查看更多>>
下载资源
资源描述

北邮微机原理与接口技术3.docx

《北邮微机原理与接口技术3.docx》由会员分享,可在线阅读,更多相关《北邮微机原理与接口技术3.docx(29页珍藏版)》请在冰豆网上搜索。

北邮微机原理与接口技术3.docx

北邮微机原理与接口技术3

微机原理与接口技术硬件实验报告

目录

3.实验三8253计数器/定时器的应用3

3.1.实验目的3

3.2.实验内容3

3.2.1.连接电路并测试3

3.2.2.音乐播放6

3.2.3.弹琴17

3.3.思考题27

3.4.心得体会27

参考资料28

声明与致谢28

3.实验三8253计数器/定时器的应用

3.1.实验目的

学习掌握8253用作定时器的编程原理。

3.2.实验内容

3.2.1.连接电路并测试

8253的CS接译码器输出Y1(其地址为E820-E827H);8253的OUT接蜂鸣器的BELL端;8253的门控信号GATE接+5V;8253的CLK端接Q7(32KHz);清零复位电路中的T/C端接地(或接RESET端)。

图13电路连接示意(局部)

图14线路连接

在本实验中,只采用定时器0,方式3,只用低字节初始化,故初始化控制字为00010110B,即16H。

它发往控制口E803H。

初值赋给端口E800H。

利用下表,在debug模式下,测试8253与蜂鸣器工作状况。

表4不同音高对应分频数(基频32KHz)

音名

分频数(十六进制)

低音

中音

高音

更高音

甚高音

Do

80

40

20

10

Re

72

39

1C

0E

Mi

66

33

19

Fa

60

30

18

So

55

2B

15

La

4D

26

13

Si

87

44

22

11

CODE(debugmode)

MOVDX,E823

MOVAL,16

OUTDX,AL

MOVDX,E820

MOVAL,80

OUTDX,AL

经检验,蜂鸣器发声正常。

3.2.2.音乐播放

完成一个音乐发生器,通过蜂鸣器放出音乐,并在数码管上显示乐谱。

程序设计:

音乐为巴赫的小步舞曲,只放一遍。

放音乐时,在最左边的数码管上显示播放的音符。

放完音乐或用户敲击键盘时退出程序返回DOS。

返回DOS前,数码管全灭,蜂鸣器静音。

流程图如下:

图15音乐播放流程图

程序源代码:

CODE(minuet.asm)

;FILENAME:

minuet.asm

;AUTHOR:

XIAO,Zhiqing(No.13,Cl.07105)

;DATE:

20091223

;DESCRIPTION:

playmusic

;=============macro=============

;macro:

myOut(WARNING:

itmaychangethevalueofAL)

;it'sstronglyrecommendedthatdatabeAL

myOutMACROportAddr,data

PUSHDX

MOVDX,portAddr

MOVAL,data

OUTDX,AL

POPDX

ENDM

;macro:

myLutOut(WARNING:

itmaychangethevalueofAL)

;it'sstronglyrecommendedthatdatabeAL

myLutOutMACROportAddr,lut,data

PUSHDX

PUSHBX

MOVBX,OFFSETlut

MOVAL,data

XLATlut

MOVDX,portAddr

OUTDX,AL

POPBX

POPDX

ENDM

;macro:

myIn(WARNING:

itmaychangethevalueofAL)

;it'sstronglyrecommendedthatdatabeAL

myInMACROportAddr,data

PUSHDX

MOVDX,portAddr

INAL,DX

MOVdata,AL

POPDX

ENDM

;=============datasegment=============

DataSEGMENT

;SegmentsLookupTable

SegLutDB0EDH,21H,0F4H,0F1H,39H;"01234"

DB0D9H,0DDH,61H,0FDH,0F9H;"56789"

DB7DH,9DH,0CCH,0B5H,0DCH,5CH;"ABCDEF"

DB3DH,8CH;'H'(10H)'L'(11H)

DB00H,10H;''(12H)'-'(13H)

spaceEQU12H

barEQU13H

;Contentindexarraytoprint

ContentDB12H,12H,12H,12H,12H,12H

;Voicetoplay

FreqDB0H

;freq

siFEQU87H;32k/240;0

do0EQU80H;32k/256;1

re0EQU72H;32k/288;2

mi0EQU66H;32k/320;3

fa0EQU60H;32k/341;4

so0EQU55H;32k/384;5

la0EQU4DH;32k/427;6

si0EQU44H;32k/480;7

do1EQU40H;32k/512;8

re1EQU39H;32k/576;9

mi1EQU33H;32k/640;A

fa1EQU30H;32k/682;B

so1EQU2BH;32k/768;C

la1EQU26H;32k/853;D

si1EQU22H;32k/960;E

do2EQU20H;32k/1024;F

re2EQU1CH;

mi2EQU19H;

fa2EQU18H;

so2EQU15H;

la2EQU13H;

si2EQU11H;

do3EQU10H;

re3EQU0EH;

;musicfreqlookuptable

FreqLutDBsiF;(00H)

DBdo0,re0,mi0,fa0,so0,la0,si0;(01H-07H)

DBdo1,re1,mi1,fa1,so1,la1,si1;(08H-0EH)

DBdo2;(0FH)

DBre2,mi2,fa2,so2,la2,si2

DBdo3,re3

;musicdisplaylookuptable

TubeLutDB61H;(00H)

DB21H,0F4H,0F1H,39H,0D9H,0DDH,61H;(01H-07H)

DB21H,0F4H,0F1H,39H,0D9H,0DDH,61H;(08H-0EH)

DB21H;(0FH)

DB0F4H,0F1H,39H,0D9H,0DDH,61H

DB21H,0F4H,0F1H,39H,0D9H,0DDH,61H

;buttonmatrix

buttonPressedDB0;0FFHforpressed,00Hfornot.

buttonRowDB0

buttonColDB0

buttonIndexDB0

buttonEnableDW0000H

labEQU1;1standforXue9,0standforJiao2

IFlab

;Xue9

PortSwEQU0E8E0H

;8255

PortAEQU0E800H

PortBEQU0E801H

PortCEQU0E802H

PortControlEQU0E803H

;8253

Timer0EQU0E820H

Timer1EQU0E821H

Timer2EQU0E822H

TimerControlEQU0E823H

ELSE

;Jiao2

PortSwEQU0EEE0H

;8255

PortAEQU0EE00H

PortBEQU0EE01H

PortCEQU0EE02H

PortControlEQU0EE03H

;8253

Timer0EQU0EE20H

Timer1EQU0EE21H

Timer2EQU0EE22H

TimerControlEQU0EE23H

ENDIF

NotesDB07H+5,07H+1,07H+2,07H+3,07H+4,07H+5,07H+1,07H+1

DB07H+6,07H+4,07H+5,07H+6,07H+7,0EH+1,07H+1,07H+1

DB07H+4,07H+5,07H+4,07H+3,07H+2,07H+3,07H+4,07H+3,07H+2,07H+1

DB00H+7,07H+1,07H+2,07H+3,07H+1,07H+2

DB07H+5,07H+1,07H+2,07H+3,07H+4,07H+5,07H+1,07H+1

DB07H+6,07H+4,07H+5,07H+6,07H+7,0EH+1,07H+1,07H+1

DB07H+4,07H+5,07H+4,07H+3,07H+2,07H+3,07H+4,07H+3,07H+2,07H+1

DB07H+2,07H+3,07H+2,07H+1,00H+7,07H+1

DB0EH+1,07H+7,07H+6,07H+7,07H+3,07H+3

DB07H+6,00H+6,00H+7,07H+1,07H+2,07H+3,07H+3,07H+2,07H+3

DB07H+4,07H+5,07H+4,07H+3,07H+2,07H+3,07H+4,07H+3,07H+2,07H+1

DB07H+2,07H+3,07H+2,07H+1,07H+2,00H+7

DB0EH+1,07H+7,07H+6,07H+7,07H+3,07H+3

DB07H+6,00H+6,00H+7,07H+1,07H+2,07H+3,07H+3,07H+2,07H+3

DB07H+4,07H+5,07H+4,07H+3,07H+2,07H+3,07H+4,07H+3,07H+2,07H+1

DB07H+2,07H+3,07H+2,07H+1,00H+7,07H+1

LengthOfSongEQU$-Notes

DurationDB4,2,2,2,2,4,4,4

DB4,2,2,2,2,4,4,4

DB4,2,2,2,2,4,2,2,2,2

DB4,2,2,2,2,12

DB4,2,2,2,2,4,4,4

DB4,2,2,2,2,4,4,4

DB4,2,2,2,2,4,2,2,2,2

DB4,2,2,2,2,12

DB4,4,4,4,4,4

DB4,2,2,2,2,4,2,2,4

DB4,2,2,2,2,4,2,2,2,2

DB4,2,2,2,2,12

DB4,4,4,4,4,4

DB4,2,2,2,2,4,2,2,4

DB4,2,2,2,2,4,2,2,2,2

DB4,2,2,2,2,12

DataENDS

;=============stacksegment=============

StackSEGMENTSTACK'STACK'

DB100HDUP(?

StackENDS

;=============codesegment=============

CodeSEGMENT

ASSUMECS:

Code,DS:

Data,SS:

Stack

MainPROCFAR

PUSHDS

XORAX,AX

PUSHAX

MOVAX,Data

MOVDS,AX

myOutPortControl,80H

;8255:

10000000Bmeans:

;A--mode0,output

;B--mode0,output

;CHigh--output(itwillchangeduringrunning)

;CLow--output(itwillchangeduringrunning)

myOutPortB,01H;showtheleftmostdigit

CALLPlay

myOutPortB,00H

RET

MainENDP

PlayPROC

PUSHSI

XORSI,SI

nextTune:

CALLShowTube

CALLPlayNote

CALLNoteDuration

CALLPlayHush

CALLHushDuration

CALLCheckExit

INCSI

CMPSI,LengthOfSong

JBnextTune

POPSI

RET

PlayENDP

ShowTubePROC

PUSHAX

PUSHBX

PUSHSI

MOVBX,OFFSETNotes

MOVAX,SI

XLATNotes

myLutOutPortA,TubeLut,AL

POPSI

POPBX

POPAX

RET

ShowTubeENDP

PlayNotePROC

PUSHAX

PUSHBX

PUSHSI

MOVBX,OFFSETNotes

MOVAX,SI

XLATNotes

PUSHAX

myOutTimerControl,16H

POPAX

myLutOutTimer0,FreqLut,AL

POPSI

POPBX

POPAX

RET

PlayNoteENDP

NoteDurationPROC

PUSHAX

PUSHBX

PUSHCX

PUSHSI

MOVBX,OFFSETDuration

MOVAX,SI

XLATDuration

XORAH,AH;uselessinstructindeed,sincehighbyteofSIiszero

MOVCX,0100H

MULCX

SUBCX,10H

nextSubNoteDelay:

CALLBasicDelay

DECAX

JNZnextSubNoteDelay

POPSI

POPCX

POPBX

POPAX

RET

NoteDurationENDP

PlayHushPROC

PUSHAX

PUSHBX

PUSHSI

myOutTimerControl,16H

;00:

Timer0

;01:

LowerByteonly

;011:

Mode3

;0:

BinaryCounting

myOutTimer0,1

POPSI

POPBX

POPAX

RET

PlayHushENDP

HushDurationPROC

PUSHAX

PUSHBX

PUSHCX

PUSHSI

MOVCX,10H

nextSubHushDelay:

CALLBasicDelay

JNZnextSubHushDelay

POPSI

POPCX

POPBX

POPAX

RET

HushDurationENDP

BasicDelayPROC

PUSHCX

MOVCX,0080H

myLoopLabel:

PUSHCX

MOVCX,1000H

myLoopLabel2:

DECCX

JNZmyLoopLabel2

POPCX

DECCX

JNZmyLoopLabel

POPCX

RET

BasicDelayENDP

CheckExitPROC

PUSHAX

MOVAH,0BH;checkwhetheruserinputsomethingfromkeyboard

INT21H

ORAL,AL;ifhedoes,thenreturntoDos

JZexitCheckAndQuit

myOutPortA,00H

myOutPortB,00H

CALLPlayHush

MOVAX,4C00H

INT21H

exitCheckAndQuit:

POPAX

RET

CheckExitENDP

CodeENDS

ENDMain

;=============endoffile=============

经过测验,程序运行正常。

3.2.3.弹琴

利用小键盘实现弹琴功能,并显示弹奏的乐谱。

当用户按小键盘时,蜂鸣器发声,数码管显示按下的音符。

否则,蜂鸣器不发声,数码管不显示。

用户按下标准键盘,退出程序,返回DOS。

程序流程图如下:

图16弹琴流程

程序源代码:

CODE(piano.asm)

;FILENAME:

piano.asm

;AUTHOR:

XIAO,Zhiqing(No.13,Cl.07105)

;DATE:

20091223

;DESCRIPTION:

playmusic

;=============macro=============

;macro:

myOut(WARNING:

itmaychangethevalueofAL)

;it'sstronglyrecommendedthatdatabeAL

myOutMACROportAddr,data

PUSHDX

MOVDX,portAddr

MOVAL,data

OUTDX,AL

POPDX

ENDM

;macro:

myLutOut(WARNING:

itmaychangethevalueofAL)

;it'sstronglyrecommendedthatdatabeAL

myLutOutMACROportAddr,lut,data

PUSHDX

PUSHBX

MOVBX,OFFSETlut

MOVAL,data

XLATlut

MOVDX,portAddr

OUTDX,AL

POPBX

POPDX

ENDM

;macro:

myIn(WARNING:

itmaychangethevalueofAL)

;it'sstronglyrecommendedthatdatabeAL

myInMACROportAddr,data

PUSHDX

MOVDX,portAddr

INAL,DX

MOVdata,AL

POPDX

ENDM

;=============datasegment=============

DataSEGMENT

;SegmentsLookupTable

SegLutDB0EDH,21H,0F4H,0F1H,39H;"01234"

DB0D9H,0DDH,61H,0FDH,0F9H;"56789"

DB7DH,9DH,0CCH,0B5H,0DCH,5CH;"ABCDEF"

DB3DH,8CH;'H'(10H)'L'(11H)

DB00H,10H;''(12H)'-'(13H)

spaceEQU12H

barEQU13H

;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1