这里TF、TR、IE、IT后面跟的0和1是对单片机寄存器中位的命名,因为有两个定时/计数器、两个中断,所以用0、1来区分。
各位的定义如下:
TF1、TF0:分别是定时器1、定时器0的溢出标志位。当定时器x计满溢出时,由硬件使TFx位置“1”,并申请中断。进入中断服务程序后,由硬件自动清“0”,在查询方式下用软件清“0”。
TR1、TR0:分别是定时器1、定时器0的运行控制位。由软件清“0”关闭定时器。当GATE=1,且INTx为高电平时,TR置“1”启动定时器;当GATE=0,TRx置“1”启动定时器。
IE1、IE0:分别为外部中断1、外部中断0的请求标志位。
IT1、IT0:分别为外部中断1、外部中断0的触发方式选择位。当ITx=0,为低电平触发方式;当ITx=1,为下降沿触发方式。
扩展资料:
TCON初始化:
1、确定工作方式(即对TMOD赋值);
2、预置定时或计数的初值(可直接将初值写入TH0、TL0或TH1、TL1);
3、根据需要开放定时器/计数器的中断(直接对IE位赋值);
4、启动定时器/计数器(若已规定用软件启动,则可把TR0或TR1置“1”;若已规定由外中断引脚电平启动,则需给外引脚加启动电平。当实现了启动要求后,定时器即按规定的工作方式和初值开始计数或定时)。
参考资料来源:百度百科-TCON
下面是修改的代码。你注意注释部分:
ORG 0000H
JMP START
ORG 13H //这里要改,因为it0和it1的中断向量表地址不同,这个地方要
//看你的单片机类型,51的话,就不是13这数值,你看看你的
//it0的中断起始地址应该是什么,把13H改了。
JMP INT_0 //改为INT_0
START: MOV IE,#10000100B //IE也需要改,设置中断控制寄存器:
//改为MOV IE,#01001000B
MOV SP,#30H
SETB IT1 //这里要改为SETB IT0
MOV A,#01010101B
LOOP: MOV P0,A
CALL DELAY
CPL A
JMP LOOP
INT_0: PUSH PSW
PUSH ACC
SETB RS0
MOV R0,#3
INT_LOOP:MOV A,#0FEH
MOV R1,#7
INT_LOOPL:MOV P0,A
CALL DELAY
RL A
DJNZ R1,INT_LOOPL
MOV R1,#7
INT_LOOPR:MOV P0,A
CALL DELAY
RR A
DJNZ R1,INT_LOOPR
DJNZ R0,INT_LOOP
POP ACC
POP PSW
RETI
DELAY: MOV R7,#200
D1: MOV R6,#250
DJNZ R6,$
DJNZ R7,D1
RET
END
需要改的就这几个地方,希望你看看。因为你没有具体的限制是什么类型的单片机,这样的话,指令和中断地址就不能非常具体的给你改。你结合我的提示,改改吧。
IT1是51单片机外部中断1的触发方式选择位。为0时是低电平触发!低电平触发一般用于一些芯片发出的信号!一般持续时间不长!为什么强调时间?因为单片机低电平触发的话!要求低电平至少持续3个机器周期,一般还是比较容易实现的,但如果持续时间过长的话!会出现反复进中断!造成主程序回一直被打断!
一般如果用的是按键或者是电平时间不好控制,那么一般选择IT1为1!即下降沿触发!这是一个跳变!容易控制,并且会自动清除中断标志位!比如ADC0809的转换完成引脚,加一个反相器就可以连接到外部中断引脚,实现用外部中断采集ADC的值! 有疑问可留言!
IT0是外部中断0中断触发方式选择位,为0是低电平触发,为1是下降沿触发(也就是一个脉冲触发一次有效)。
IT1是外部中断1中断触发方式选择位,为0是低电平触发,为1是下降沿触发(也就是一个脉冲触发一次有效)。
SETB IT0或者SETB IT1就是将该位置1
以上就是关于单片机 TCON 每一位:TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 表示什么意思0或1代表什么谢谢,百度百科都没全部的内容,包括:单片机 TCON 每一位:TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 表示什么意思0或1代表什么谢谢,百度百科都没、单片机IT1代码改用IT0、单片机IT1电平触发方式适用条件等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)