单片机课后习题 - 图文(2)

2019-01-12 18:59

个时钟脉冲,可将CL、CH初始值设为零,CCAP0H设为04H,CCAP0L设为57H,在每次PCA中断里:将计数值加到比较匹配寄存器里CCAP0H+=4,CCAP0L+=57H

4秒启动一次PCA计数(CR=1),4秒停止(CR=0);

4秒定时器由T1产生,工作在方式1定时50毫秒,计数时钟fosc/12 初值N,则(65536-N)*1=50000?N=15536=3cb0H (1)

汇编程序:

CCON EQU 0D8H;PCA控制寄存器 CMOD EQU 0D9H;PCA模式寄存器 CL EQU 0E9H;PCA定时器的低8位 CH EQU 0F9H;PCA定时器的高8位

CCAPM0 EQU 0DAH; PCA模块0的模式寄存器

CCAP0L EQU 0EAH;PCA模块0的捕获寄存器的低8位 CCAP0H EQU 0FAH;PCA模块0的捕获寄存器的高8位 AUXR EQU 8EH

CR BIT CCON.6;PCA定时控制位 CF BIT CCON.7;PCA溢出标志位 ORG 0000H LJMP MAIN ORG 001BH LJMP T1_INT ORG 003BH LJMP PCA_INT ORG 0100H MAIN:

CLR A

MOV CCON,A;//(P197) MOV CL,A; MOV CH,A;

MOV SP,#0BFH;初始化堆栈指针 MOV TMOD,#10H;T1工作在方式1

MOV TL1,#B0H;给T1写入初值 MOV TH1,#3CH;

ANL AUXR,#101111111H;//T1X12=0

MOV CCAPM0,#4DH;// 允许中断,输出方波

MOV CCAP0L,#57H; MOV CCAP0H,#04H;

MOV CMOD,#0H;//FOSC/12时钟计数 MOV R7,#80;利用寄存器R7计数80次 SETB EA; SETB ET1; SETB TR1; SETB CR SJMP $

T1_INT: MOV TL1,#B0H;给T1写入初值

MOV TH1,#3CH; DJNZ R7,NEXT; MOV C,CR CPL C MOV CR,C MOV R7,#80;

NEXT:RETI PCA_INT: PUSH PSW PUSH ACC CLR CCF0 MOV A,CCAP0L ADD A,#57H MOV CCAP0L,A MOV A,CCAP0H ADDC A,#04H

MOV CCAP0H,A POP ACC POP PSW RETI END C51程序:

#include unsigned char i=0; void main() {

TMOD=0x10; TL1=0xB0; TH1=0x3C; CMOD=0x00; AUXR&=0xBF; CCAPM0=0x4D; CCAP0L=0x57; CCAP0H=0x04; EA=1; ET1=1; TR1=1; CR=1; while(1); }

void T1_INT() interrupt 3 {

TH1=0xB0; TH1=0x3C; i++; if(i==80)

{ CR=!CR; i=0; } }

void pca_INT() interrupt 7 {

CCAP0L+=0x57; CCAP0H+=0x04; }

7-13假设系统的时钟频率为11.0592MHz,利用PCA模块的PWM功能分别用汇编语言和C51编程实现输出400Hz且占空比为60%的矩形波。

分析:仿照例题7-8,系统的时钟频率为11.0592MHz,根据公式PWM的频率

PCA的时钟源频率,计算出PCA的时钟源频率为102400Hz,用T0的溢出作为PCA

256时钟源,11059200?102400=108,即对系统时钟源fosc进行108级分频,设T0工作在1T模

256-CCAP0L式,T0的初值为256-108=148=80H,由占空比==0.6,可计算出

256=

CCAP0L=66H,CMOD寄存器应赋值为04H,CCAPM0寄存器初值为42H。

(1)汇编语言程序:

CCON EQU 0D8H;PCA控制寄存器 CMOD EQU 0D9H;PCA模式寄存器 CL EQU 0E9H;PCA定时器的低8位 CH EQU 0F9H;PCA定时器的高8位

CCAPM0 EQU 0DAH;PCA模块0的模式寄存器 CCAP0L EQU 0EAH;PCA模块0的捕获寄存器的低8位 CCAP0H EQU 0FAH;PCA模块0的捕获寄存器的高8位 AUXR EQU 8EH

CR BIT CCON.6;PCA定时控制位 CF BIT CCON.7;PCA 溢出标志位

ORG 0000H

CLR A MOV CCON,A

MOV CL,A;计数器初值复位 MOV CH,A

MOV TMOD ,#02H MOV TL0,#80H ;给T0赋初值 MOV TH0,#80H

MOV CMOD,#04H ;利用T0的溢出作PCA时钟源 MOV AUXR,#80H ;T0工作在1T模式

MOV CCAPM0,#42H ;允许P1.3引脚作脉宽调节输出 MOV CCAP0L,#66H ;用于输出占空比为60%的波形 MOV CCAP0H,#66H

SETB TR0 ;T0计数器启动工作 SETB CR ;PCA计数器启动工作 SJMP $ (2)C51程序:

#include //包含用于定义STC12C5Axx系列单片机片内资源的头文件 void main( ) {

CCON=0x00; //PCA控制寄存器清0 CL=0x00; //16位PCA计数器清0 CH=0x00;

TMOD=0x02;//T0工作在方式2 TL0=0x80;//给T0赋初值 TH0=0x80;

CMOD=0x04; // 利用T0的溢出作PCA时钟源

AUXR=0x80; // T0工作在1T模式

CCAPM0=0x42;//允许比较且作为PWM脉宽调节输出

CCAP0L=0x66;//控制模块0的输出占空比为40% CCAP0H=0x66; TR0=1;//T0开始工作


单片机课后习题 - 图文(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:ArcSde的两种连接方式、区别和常见问题

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: