单片机原理与应用-基于汇编、C51及混合编程1-11章习题解答

TL2 DATA 0CCH RCAP2L DATA 0CAH RCAP2H DATA 0CBH T2MOD DATA 0C9H T2CON DATA 0C8H TR2 BIT 0CAH TF2 BIT 0CFH ORG 0000H LJMP MAIN ORG 0100H MAIN: MOV T2CON,#00H;T2工作在时钟输出方式 MOV T2MOD,#02H;T2输出时钟使能 MOV TL2,#0A0H;输出50Hz频率方波 MOV TH2,#15H MOV RCAP2L,#0A0H MOV RCAP2H,#15H

SETB TR2;T2开始工作 SJMP $

END

C51程序:

#include sfr T2MOD=0xC9; void main() {

T2CON=0x00; T2MOD=0x02;

TL2=0xA0;//输出50Hz频率方波 TH2=0x15; RCAP2L=0xA0; RCAP2H=0x15; TR2=1; while(1); }

7-11 简述STC12C5A60S2单片机的PCA模块的功能。

PCA每个模块都有自己的工作方式寄存器,通过对工作方式寄存器的设置,可以使各模块工作在定时方式(相当于定时、计数器)、捕获方式(相对应模块计数器所计数据进行捕获的方式,用于测量外部信号产生的时间间隔)、方波输出方式、输出信号脉宽调制(PWM)方式。

7-12假设系统时钟频率为12MHz,利用PCA模块的功能,分别用汇编语言和C51编程实现在P1.3引脚上间断重复输出频率为450Hz的

21

方波,持续和停止时间均为4s。

分析:将PCA模块的工作方式寄存器CCAPM0寄存器写为4DH,即PCA0设为时钟输出方式,从而可以在P1.3引脚自动翻转,输出方波,并允许PCA中断。要求方波频率为450hz,即周期为1/450,定时时间应设定为1/900s,选择计数器时钟来源为系统时钟频率的12分频,即工作方式寄存器CMOD设为00H,需要计数(1/900)/(12/12000000)=10000/9≈1111=0457H个时钟脉冲,可将CL、CH初始值设为零,CCAP0H设为04H,CCAP0L设为57H,在每次PCA中断里:将计数值加到比较匹配寄存器里CCAP0H、CCAP0L=CCAP0H、CCAP0L+0457H

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

4秒钟定时:定时器T1,工作在方式1,计数时钟fosc/12,定时50毫秒,用R7计数T1中断80次产生4秒钟定时。

初值为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,#0B0H;给T1写入初值 MOV TH

>>闂傚倸鍊搁崐宄懊归崶顒夋晪鐟滃繘骞戦姀銈呯婵°倐鍋撶痪鎯ь煼閺岋綁骞囬锝嗏挅濠电偛妯婃禍婊堝礃閳ь剙顪冮妶鍡楀Ё缂傚秴妫楀玻鍧楁偄閸忓皷鎷虹紒缁㈠幖閹冲繗銇愯缁辨帡鎮╅崘鑼患缂備緡鍠栭悧鎾崇暦閹烘鍊烽悗鐢登圭敮鎯р攽閻樺灚鏆╁┑顔碱嚟閹广垹螣娓氼垳鈧埖銇勯弴妤€浜鹃梺鍝勭焿缁查箖骞嗛弮鍫晬婵炴垶锕╂导锟�<<
12@gma联系客服:779662525#qq.com(#替换为@)