资源描述:
《实验八_可编程定时器》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、实验八可编程定时器/计数器(8253/8254)一、实验目的:学习掌握8253用作定时器的编程原理;二、8253应用小结8253和8254都是可编程计数器,它们的引脚兼容,功能与使用方法相同。8254是8253的改进型。1.8253初始化使用8253前,要进行初始化编程。初始化编程的步骤是:①向控制寄存器端口写入控制字对使用的计数器规定其使用方式等。②向使用的计数器端口写入计数初值。2.8253控制字D7D6=00:使用0号计数器,D7D6=01:使用1号计数器D7D6=10:使用2号计数器,D7D6=11:无效D5D4=00:锁存当前计数值D5D4=01:只写低8位(高8位为0),读出时只读
2、低8位D5D4=10:只写高8位(低8位为0),读出时只读高8位D5D4=11:先读/写低8位,后读/写高8位计数值D3D2D1=000:选择方式0,D3D2D1=001:选择方式1D3D2D1=X10:选择方式2,D3D2D1=X11:选择方式3D3D2D1=100:选择方式4,D3D2D1=101:选择方式5D0=0:计数初值为二进制,D0=1:计数初值为BCD码数三、实验电路8254控制部分:接线CS/8253接Y0/IO地址GATE0/8253接+5VCLK0/8253接1M时钟OUT0/8253接喇叭或蜂鸣器8255控制及数码管显示部分:接线PA7~PA0/8255接dp~a/LED
3、数码管PC3~PC0/8255接S3~S0/LED数码管CS/8255接Y1/IO地址三、编程提示1、8253控制寄存器地址283H计数器0地址280H计数器1地址281H计数器2地址282HCLK0连接时钟1MHZ2.定时器可工作在方式3下。四、实验内容1.完成一个音乐发生器,通过喇叭或蜂鸣器放出音乐,并在数码管上显示乐谱。音符频率对照五、实验流程图开始初始化8255计数CX-1按对应音符给计数器赋初值初始化8254读入音符(数字)是否计数结束?按对应音符给数码管送段码结束六、源代码DATASEGMENTBUFDB'55651755652155531764431233431733432155
4、33176665673';LENEQU$-BUF;乐谱长度DATAENDSSTACKSEGMENTDB100DUP(?)STACKENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACKDELAYPROC;延时子程序PUSHCXMOVCX,0FFFFHL:MOVAX,100WA:DECAXJNZWALOOPLPOPCXRETDELAYENDPSTART:MOVAX,DATAMOVDS,AXMOVAL,80HMOVDX,28BH;OUTDX,AL;初始化8255MOVDX,283HMOVAL,00111110BOUTDX,AL;初始化8254BEGIN:MOVB
5、X,OFFSETBUFMOVCX,LENPRO:MOVAL,[BX]ADDBX,1;指针指向下一个音符CMPAL,31HJZN1CMPAL,32HJZN2CMPAL,33HJZN3CMPAL,34HJZN4CMPAL,35HJZN5CMPAL,36HJZN6CMPAL,37HJZN7CMPAL,38HJZN8PRO2:LOOPPROJMPFINN1:JMPDON2:JMPREN3:JMPMIN4:JMPFAN5:JMPSON6:JMPLAN7:JMPSIIN8:JMPDOODO:MOVDX,280H;设置零号计数器的初始值MOVAL,42H;初始值低8位OUTDX,ALMOVAL,0FHOUT
6、DX,AL;高8位MOVDX,28AHMOVAL,00HOUTDX,AL;数码管清零MOVDX,288HMOVAL,06HOUTDX,AL;给数码管送出1的段码MOVDX,28AHMOVAL,01HOUTDX,AL;给数码管送出位码(最低位显示)CALLDELAY;JMPPRO2;准备接收下一个音符RE:MOVDX,280HMOVAL,90H;初始值低8位OUTDX,ALMOVAL,0DHOUTDX,AL;高8位MOVDX,28AHMOVAL,00HOUTDX,ALMOVDX,288HMOVAL,5BHOUTDX,ALMOVDX,28AHMOVAL,01HOUTDX,AL;给数码管送出位码(最
7、低位显示)CALLDELAYJMPPRO2;准备接收下一个音符MI:MOVDX,280HMOVAL,34H;初始值低8位OUTDX,ALMOVAL,0CHOUTDX,AL;高8位MOVDX,28AHMOVAL,00HOUTDX,ALMOVDX,288H;给数码管送出2的段码MOVAL,4FHOUTDX,ALMOVDX,28AHMOVAL,01HOUTDX,AL;给数码管送出位码(最低位显示)CAL