- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
单片机汇编语言 周期性信号频率和占空比
周期性信号的频率和占空比测试
接法:INT0接周期性信号
测量信号的周期
INT0的初始化应该为:
void int0_init()
{
EA=0; //关掉所有中断允许
IT0=1; //选用下降沿触发INT0中断
EA=1; //开所有中断
EX0=1; //开INT0中断
}
INT0的中断服务程序应该为:
Unsigned intCycleTime = 0; //周期的计数值
void int0_svr() interrupt 0
{
if(!flag1) //第一次下降沿出现时启动Timer1计数;
{
timer1_init();
flag1=1;
}
Else //第二次下降沿出现时停止Timer1计数,计算周期,并关掉INT0中断
{
EX0=0;
CycleTime =TH1*256+TL1; // 获得一个周期的计数值,乘上机器周期就可以了
}
}
//Timer1计算信号的周期,由于只计算一次,所以选用MODE1.
void timer1_init()
{
EA=0;
//GATE=0;C/T=0;M1=0;M2=1;
TMOD=TMPD|0x10;
//从0开始计数
TH1=0;
TL1=0;
EA=1;
ET1=1;
}
考虑一个问题:如果信号的周期特别长,超过了65536个机器周期,那该怎么处理?
解决方案:当Time1超过65536,会触发Timer1中断,在中断里面计数,假设为Y_Y
那么最终的计数应该是: ( Y_Y*65536+ CycleTime)
Unsigned intY_Y_=0;
void timer1_svr() interrupt 3
{
timer1_init();
Y_Y++;
}
测量周期信号的高电平时间
利用Timer0对高电平进行计数,由于只计算一次,所以选用MODE1.
Void timer0_init()
{
EA =0 ;
//GATE=1;C/T =0;;M1=0;M2=1;
TMOD = TMOD|0x09;
TH0=0;
TL0=0;
EA=1;
ET0=1;
}
在INT0的中断里面直接关掉Timer0,并将计数结果(TH0、TL0)提取出来计算
考虑一个问题:如果信号的周期特别长,超过了65536个机器周期,处理方法与上面一样
34、并行接口扩展
可以采用74LS595,是串入并出的,可接任意个595,只占用3个脚,即ser(数据),sclk(移位时钟),srclk(输出)。所有的74LS595的sclk连在一起,srclk连在一起,第一个595的ser接单片机一个IO引脚,每一个595的QH‘接下一个595的ser。
sclk置低,置ser,再将sclk置高,就移了一位二进制数据进595了,重复这么移,直到所有的数据移入,再将srclk先置低再置高,就将原先移入的数据写到595输出寄存器,在各个595的输出引脚上反映出来。也就是将单片机三个引脚扩展成了很多个并行口。
3*3键盘矩阵
MOV? AL,82HOUT? 43H,ALBEGIN:MOV? AL,0?????????????? OUT? 40H,ALWAIT :??? IN??? AL,41H?????????????? AND? AL,0FH? CMP? AL,0FH? JZ??? WAIT?????????????? MOV? CX,7FFH?????? L0: LOOP? L0????? ST: MOV?? BL,3?????????????? MOV? BH,4?????????????? MOV? AL,0FEH?????????????? MOV? CL,0FH?????????????? MOV? CH,0FFHL1: OUT? 40H,AL???????? ROL?? AL?????????? MOV? AH,AL????????? IN???? AL,41H ????????? AND?? AL,CL????????? CMP?? AL,CL?????????????? ????????? JNZ??? L2 ????????? ADD? CH,BH????????? MOV? AL,AH????????? DEC?? BL????????? JNZ?? L1????????? JMP?? BEGINL2:? INC?? CH?????????? RCR?? AL?????????? JC???? L2?????????? MOV? AL,CH????????? JMP?? KEYTABLE
42 并口扩展
文档评论(0)