欢迎来到天天文库
浏览记录
ID:20198057
大小:97.00 KB
页数:11页
时间:2018-10-11
《比较器与pwm控制与实习》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、第7章比较器与PWM控制与实习7-1.2 简单功能比较器实习程序:SCMP1.C/*=============================================*//*Filename:SCMP1.C*//*=============================================*/#include"f240regs.h"main(void){InitCPU();/*设定工作频率=20MHz=0.5uS*/OCRA=0x0700;/*设定IOPB0-2脚=PWM7-9脚*/GPTCON=0x00;/*禁用TxCMP*/T1C
2、ON=0x1740;/*TPS2-0=111,基本计时时间=0.5uS*128=64mS,连续上数*/T1CNT=0;/*T1计数=0*/T1PR=60000;/*T1周期时间=64mS*60000=0.384秒*/COMCON=0x8100;/*响应简单比较器,立即输出0,使用T1*/SACTR=0x15;/*PWM7-9为立即输出1*/SCMPR1=40000;/*PWM7高电平时间=64mS*40000=0.256秒*/SCMPR2=20000;/*PWM8高电平时间=64mS*20000=0.128秒*/SCMPR3=10000;/*PWM9高电平
3、时间=64mS*10000=0.064秒*/while(1);/*空转*/}7-2.2全功能比较器与PWM实习全功能比较器输出实习范例程序:FCMP1.C/*=============================================*//*Filename:FCMP1.C*//*=============================================*/#include"f240regs.h"voidmain(void){inti=50;/*休时时间=5us*/InitCPU();T1CNT=0x00;/*清除计时器1*/
4、T1PR=1000;/*设定T1周期=100uS=10kHz*/CMPR1=800;/*设定全功能比较器1数值,令PWM1/PWM2=80uS*/CMPR2=600;/*设定全功能比较器2数值,令PWM3/PWM4=60uS*/CMPR3=400;/*设定全功能比较器3数值,令PWM5/PWM6=40uS*/ACTR=0x0666;/*PWM1,3,5activehigh,PWM2,4,6activelow"*/COMCON=0x8307;/*使用PWM模式,计时1溢出则重新加载,响应输出*/GPTCON=0x0055;/*SetallTxCMPoutpu
5、tactivelow*/DBTCON=(i<<8)+0xe0;/*休时时间及设定*/T1CON=0x1142;/*使用内cpuclk/2,连续上数模式*/while(1);/*空转*/}第八章捕捉器和转轴编码器原理与实习8-1.2捕捉器的实习程序:CAP1.C/*=============================================*//*Filename:CAP1.C*//*=============================================*/#include"lh092.h"#include"f240regs
6、.h"voidmain(void){inti,value=0,value1=0,value2;InitCPU();OCRA=0xFFFF;/*设定T1CMP引脚*/OCRB=0xFFF3;/*设定CAP0-3引脚*/CS0=0;T1CNT=0;/*设定计时1=0*/T1PR=0x100;/*设定计时1周期时间=80h*0.1uS*/T1CMPR=0x40;/*设定计时1比较器时间=40h*0.1uS*/T1CON=0x1142;/*响应T1基本计时时间=0.1uS*/GPTCON=0x0055;/*设定T1outputactivelow*/CAPCON=0
7、x9404;/*响应CAP3脚为正缘触发输入*/T3CNT=0x0000;/*设定计时3=0*/T3CMPR=0x00;/*设定计时3比较器时间*/T3PR=0x7FFF;/*设定计时3周期时间*/T3CON=0x1142;/*响应T3基本计时时间=0.1uS*/while(1){CAPFIFO=0;if(CAPFIFO==0x2000)/*表示CAP3FIFO已存入两个触发时间*/{value1=CAP3FIFO;/*取出第一个触发时间*/value2=CAP3FIFO;/*取出第二个触发时间*/value=value2-value1;/*两个触发时间相
8、减=输入的周期时间*/if(value>0)CS0=value;/
此文档下载收益归作者所有