㈠ 51单片机实验(关于定时器计数器)
6mz的晶振 可算出一个时钟周期为2微秒,200毫秒去除一下2微秒就是10000,然后吧10000取16进制为 27A0 ,用 FFFF减27A0再加1 得 C860,用定时方式一,TL0 ,#60H
TH0, #C8H
㈡ 单片机定时/计数器实验--脉冲计数器
这是个简易频率计,程序如下:
;---------------------------------
ORG0000H
JMPSTART
ORG000BH
JMPT0_INT
;---------------------------------
START:
MOVTMOD,#51H;/*01010001T1计数,T0定时*/
MOVTH0,#HIGH(65536-50000);50ms@12MHz
MOVTL0,#LOW(65536-50000)
MOVTH1,#0
MOVTL1,#0
SETBTR0
SETBTR1
SETBET0
SETBEA
MOVR7,#20
SJMP$
;---------------------------------
T0_INT:;50ms执行一次
MOVTL0,#LOW(65536-50000);重新写入初始值
MOVTH0,#HIGH(65536-50000);50ms@12MHz
DJNZR7,T0_END
MOVR7,#20
MOVP1,TL1
MOVP2,TH1
MOVTL1,#0
MOVTH1,#0
T0_END:
RETI
;---------------------------------
用PROTEUS仿真如下图。
图中信号的频率是5000Hz,显示的是16进制,这是题目中要求的形式。
㈢ 单片机计数器实验
做计数器实验,不需要开中断,T1设为计数模式,脉冲由P3.5口进入。
TR1 = 1;是单片机自己在运行
㈣ MCS—51单片机定时/计数器实验 编程 求程序
按照图示,应该用P1.7向T1送入计数脉冲
送去4000个,即达到了1s
下列程序,在PROTEUS中仿真通过
;---------------------------------
ORG
0000H
JMP
START
ORG
000BH
JMP
T0_INT
ORG
001BH
JMP
T1_INT
ORG
0030H
START:MOV
SP,#60H
MOV
TMOD,#52H
;T1计数方式1;
T0定时方式2
MOV
TH0,
#(256-250)
;T0定时250us@12MHz
MOV
TL0,
#(256-250)
;
SETB
TR0;
MOV
TH1,
#(65536-4000)
/
256
;T1计数4000
MOV
TL1,
#(65536-4000)
MOD
256
;即1s
SETB
TR1;
SETB
ET0;
SETB
ET1;
SETB
EA;
MOV
R2,
#3
WAIT:
SJMP
WAIT
;等待中断
;----------------------------------
T0_INT:
;T0方式2,不用重新送初始值.
CLR
P1.7
;向T1送计数脉冲.
NOP
SETB
P1.7
RETI
;----------------------------------
T1_INT:
;每当收到4000个脉冲,即1s中断一次.
MOV
TL1,
#(65536-4000)
MOD
256
;重新送入初始值.
MOV
TH1,
#(65536-4000)/256
;T1计数4000
CLR
P1.0
DJNZ
R2,
T1_END
SETB
P1.0
MOV
R2,
#3
T1_END:
RETI
;----------------------------------
END
㈤ 单片机实验“定时/计数器及中断”的一些问题
1.1)主程序各行作用如下:
第一行:设置定时器模式
第二行:设置定时器高位寄存器初值
第三行:设置定时器低位寄存器初值
第四行:T0定时器中断使能
第五行:总中断使能
第六行:打开T0定时器
第七行:死循环(主程序停留在此行)
主程序整体实现的功能:初始化定时器T0
1.2)void Timer0_Int(void)是定时器0中断函数,每行作用如下:
第一行:重新设定定时器高位寄存器初值
第二行:重新设置定时器低位寄存器初值
第三行:如果P1_0 IO口是高电平则改为低电平,如是低电平改为高电平
整体实现的功能:P1_0 IO口高低电平1秒切换一次
妈呀,这么多问题,网上找找,应该有的