STC单片机 使用PWM功能,有PWM专用定时器,和定时器 T0 与 T1 无关。
STC单片机 的 数据手册 上有 PWM 例程,有C 语言的,也有汇编语言的,
可以上官网下载 个 相关 单片机的 数据手册 看看。
STC 单片机就是51单片机,现在的单片机教材,几乎都讲51单片机的,定时器更是必讲的。只不过,教材上讲的是MCS51单片机,而STC单片机的定时器使用完全一样的。
不论哪个单片机,都不能直接定时1S,可以定时50ms,然后设置中断,对中断计数20次就是1秒了。这种程序,在百度知道里,到处都是,随便搜索下,就可能搜索到无数个。
虽然我对PLC编程并不了解,但据我所知PLC编程的常用的都是图形编程语言,而单片机常用的编程语言为C语言或汇编语言,他们之间没有什么通用性,单片机的定时器T0,T1,PCA是单片机不可或缺的资源,下面就简单的说说你关心的几个问题,希望能够帮到你。
但凡是用到需要精确定时的控制,都要对片内相关的定时器进行配置,可以是T0也可以是T1,有些单片机或许更多,他们可以单独使用,也可以顺序使用。
STC单片机的PCA定时器是配合其硬件PWM功能使用的可编程定时器,一般情况下当使用硬件PWM功能时需要配置PCA定时器,至于其他用途使用可以参看数据手册。
关于“指定定时引脚”,51内核的单片机的定时器的全称呼为“定时/计数器Tx”,字面上既可以知道,它既可以做定时器用也可以做计数器用,当用着计数器时,计数的触发脉冲可以是片内通过编程给出,也可以由片外的相关引脚提供,只有对片外脉冲计数时才用到其外部引脚,这些引脚与其他I/O口引脚并无不同,都是由程序设定配置的,当计数器引脚被配置为计数用时,该引脚上送入片内的脉冲将被计数,当配置为普通引脚时,可以作为普通引脚应用。
最后,如果题主想入门单片机,建议你找一本入门书、购一块最简单的实验板,通过C语言的学习、边学习边实验,没啥难度的,当你初步入门了,你现在提的所有问题也就全部都是浮云了。
P27=红外线人体感应器biss0001
P20~P24BY-8001语音模块
ORG 00000H
AJMP START
ORG 000BH
AJMP TIME0
ORG 30H
AUXR DATA 8EH
P0M1 EQU 093H
P0M0 EQU 094H
P4 EQU 0C0H
P4M1 EQU 0B3H
P4M0 EQU 0B4H
P5 EQU 0C8H
P5M1 EQU 0C9H
P5M0 EQU 0CAH
T0MS EQU 30H ;毫秒计数器0
T1MS EQU 31H ;毫秒计数器1
TMI EQU 32H ;分秒计数器
MAT EQU 4FH ;总任务限时
TCST BIT 05H ;探测状态标志
START:
MOV AUXR,#7FH
MOV SP,#80H
MOV TMOD,#0F0H ;设置定时计数器为工作模式0,可重载16位计数器
MOV TH0, #3CH
MOV TL0,#0B0H ;定时器0 预置15536,一个计数周期50000uS=50mS
CLR TF0
SETB EA ;中断总开关
SETB ET0 ;定时器0中断开关
SETB TR0 ;定时器0开始计时
MOV T0MS,#00H
MOV T1MS,#00H
MOV TMI,#0
MOV 41H,#00H
MOV R2,#00H ;
MOV R3,#00H ;分计数器R3
MOV R4,#00H ;秒计数器R4
MOV R5,#00H ;秒计数器R5
MOV R6,#00H ;秒计数器R6
MOV R7,#00H ;SecondNum3
JNB P34,STRSP ;push strat
AJMP START
STRSP:
LP2:JNB P27,OC
CJNE R4,#10,LP2 ;如果持续10秒没有0信号代表没有人
CLR TCST ;设置探测标志位0代表没人
SETB P22 ;播放语言来监视端口读取及计时器运行状态
MOV R4,#0
MOV R6,#0
LP:CJNE R6,#1,LP
CLR P22
AJMP LOP
OC: ;如果10秒内有0输入代表有人
SETB TCST ;设置探测标志为1代表有人
SETB P20 ;播放语言来监视端口读取及计时器运行状态
MOV R6,#0
LP1:CJNE R6,#1,LP1
CLR P20
LOP:
MOV R6,#0
LP3:CJNE R6,#1,LP3
NOP
AJMP STRSP
AJMP START
;
;定时中断程序
TIME0: ;
PUSH ACC
PUSH PSW
INC T0MS ;毫秒计数器0+1
INC T1MS ;毫秒计数器1+1
MOV A,T0MS ;
CJNE A,#20,SCD1 ;2050ms=1S 整秒检测,不到1s回到主程序
MOV A,TMI
INC A
MOV TMI,A ;分秒计数器+1
INC R4 ;秒计数器R3+1
INC R5 ;秒计数器R5+1
INC R6 ;秒计数器R6+1
MOV T0MS,#0 ;毫秒计数器0清零
CJNE A,#60,SCD4 ;60秒=1分钟检测
INC R3 ;分计数器+1
SCD4:CJNE R4,#200,SCD3
MOV R4,#0 ;秒计数器R4清零
SCD3:CJNE R5,#200,SCD2
MOV R5,#0 ;秒计数器R5清零
SCD2:CJNE R6,#200,SCD1
MOV R6,#0 ;秒计数器R6清零
SCD1:
MOV A,T1MS
CJNE A,#255,NEX
MOV T1MS,#0
NEX:
MOV TH0, #3CH
MOV TL0,#0AFH ;定时器0 预置15535,一个计数周期50000uS=50mS
POP PSW
POP ACC
RETI
END
以上就是关于STC单片机使用定时器进行PWM调速全部的内容,包括:STC单片机使用定时器进行PWM调速、求助:STC 单片机使用定时器 定时1S、STC单片机定时器怎么用等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)