合泰单片机PWM输出程序

发布者:EnchantingEyes最新更新时间:2015-05-13 来源: 51hei关键字:合泰  单片机  PWM输出 手机看文章 扫描二维码
随时随地手机看文章
;内容:PWM输出控制LED从亮逐渐变暗直到熄灭

;完整源码下载:http://www.51hei.com/f/htpwm.rar
#INCLUDE HT66F50.INC

ORG 00H
MOV A,08H
MOV CP0C,A ;设置管脚不为比较器脚
MOV CP1C,A ;设置管脚不为比较器脚
CLR ACERL ;设置管家部位AD脚
MOV A,00010000B
MOV TMPC0,A ;T1BCP1置1使能TP1B_0
CLR TM1C0 ;fINT=fSYS/4
MOV A,10101001B ;设置为PWM模式PWM输出高有效同相T1CCLR=1
MOV TM1C1,A ;CCRA控制TP1B PWM 周期,CCRB 控制TP1B PWM 占空比
MOV A,10101000B ;置为PWM模式PWM输出高有效同相边沿对齐
MOV TM1C2,A ;
MOV A,LOW  1024-1
MOV TM1AL,A ;设置TP1B PWM 周期 CCRA=1024uS
MOV A,HIGH 1024-1
MOV TM1AH,A ;设置PC.0为输出
CLR PCC.0 
CLR PC.0 ;pc.0输出低电平
MOV A,5
SET T1ON ;PWM开始工作 
MOV A,0FFH ;设置占空比初始值
MOV [80H],A
MOV A,3 ;
MOV [81H],A

a2: 
CALL M001 ;延时
SZ [80H] ;判断占空比低位是否为0
JMP $+2 
JMP A3
DEC [80H] ;否低位减1
JMP A5
A3: 
SZ [81H] ;是则判断高位是否为0
JMP A4
MOV A,0FFH ;是低位存0FFH
MOV [80H],A ;
MOV A,3 ;高位存3 
MOV [81H],A ;不能大于周期
JMP A2
A4: 
DEC [81H] ;否则高位减1
MOV A,0FFH ;
MOV [80H],A ;低位存0FFH
A5: 
mov a,[80H] ;将占空比的数存到CCRB中
mov TM1BL,A ;
MOV A,[81H] ;
MOV TM1BH,A ;
jmp A2

M001: MOV A,2
MOV [85H],A
M002: MOV A,20
MOV [86H],A
M003: MOV A,250
MOV [87H],A
M004: SDZ [87H]
JMP M004
SDZ [86H]
JMP M003
SDZ [85H]
JMP M002 
        RET
end

关键字:合泰  单片机  PWM输出 引用地址:合泰单片机PWM输出程序

上一篇:合泰单片机接收红外遥控器程序(NEC码)
下一篇:合泰单片机笔段式LCD显示程序+电路图

推荐阅读最新更新时间:2024-03-16 14:02

ATmega48 简介
ATmega48是基于增强的AVR RISC结构的低功耗8 位CMOS微控制器。由于其先进的指令集以及单时钟周期指令执行时间,ATmega48 的数据吞吐率高达1 MIPS/MHz,从而可以缓减系统在功耗和处理速度之间的矛盾。 ATmega48 AVR 内核具有丰富的指令集和32 个通用工作寄存器。所有的寄存器都直接与算逻单元(ALU) 相连接,使得一条指令可以在一个时钟周期内同时访问两个独立的寄存器。这种结构大大提高了代码效率,并且具有比普通的CISC 微控制器最高至10 倍的数据吞吐率。 ATmega48 有如下特点:4K字节的系统内可编程Flash(具有同时读写的能力,即RWW),256 字节EEPROM,512 字节S
[单片机]
STM8S TIM2 输出PWM初始化函数
参考网上例程总结出初始化函数 #define TIM2_CLK 16000000 void timer2_Init(char channal, ulong hz,int pwm) { TIM2_ARRH = (TIM2_CLK/hz)/256; TIM2_ARRL = (TIM2_CLK/hz)%256; switch (channal) { case 1:{ TIM2_CCMR1 |= 0x70; TIM2_CCER1 |= 0x03; //通道1使能,低电平有效,配置为输出 TIM2_CCR1H = (((TIM2_CLK/hz)*pwm)/1000)/256;
[单片机]
单片机C语言的知识汇总(2)
C51常量 1、常量数据类型说明: (1)整型常量能表示为十进制如 123,0,-89 等。十六进制则以 0x 开头如 0x34,-0x3B 等。长整型就在数字后面加字母 L,如 104L,034L,0xF340 等。 (2)浮点型常量可分为 十进 制和指数表示形式。指数表 示形式为 数字 e 数字, 中的内容为可选项,其中内容根据具体情 况可有可无,但其余部分必须有,如125e3,7e9,-3.0e-3。 (3)字符型常量是单引号内的字符,如‘a’,‘d’等,不能显示的控制字符,能 在该字符前面加一个反斜杠“”组成专用转义字符。常用转义字符表请看表: (4)字符串型常量由双引号内的字符组成,如“test”,“OK”等。当引号
[单片机]
pic单片机的模拟I2C通信
**************************************** * pic单片机的模拟I2C通信 * **************************************** ;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ; Copyright (C) 1997 by Innovatus ; This code may be distributed and used freely provided that this ; copyright notice stays i
[单片机]
22.1184晶振的单片机
首先说说晶振与51单片机的机器周期得关系:晶振的倒数是一个时钟周期单位为秒,一个机器周期等于12乘时钟周期。 再说说指令周期与时钟周期得关系:对于8031等早期的51来说,指令周期和机器周期是一样的等于12乘时钟周期,但后来出现了很多改进型的51系列单片机如80320等,指令周期等于4个时钟周期,也就是说同样的晶振速度是原来的3倍。但无论如何变,T0、T1等定时器的计时任然按机器周期来计算的,也就是说12乘时钟周期。 定时器是按溢出产生中断的,所以要用溢出值65536减你所希望的值得到定时器的初值。 那么怎么计算赋值所决定的时间呢: 首先计算出机器周期:12*(1/22.1184/1000000)秒(应该是22.1184兆吧), 因
[单片机]
TI MSP430系列单片机串口通信波特率计算方法
TI MSP430系列单片机,usart模块的波特率值设定是通过以下三个寄存器决定的:UxBR0,UxBR1,UxMCTL 波特率=BRCLK/N ,主要是计算出N。 BRCLK:时钟源,可以通过寄存器设定何为时钟源; 通过寄存器UCAxCTL1的SSEL两位选择,01:ACLK,02:SMCLK N:波特率产生的分频因子。N=UxBR1+UxBR0+UxMCTL,其中UxBR1+UxBR0为整数部分,UxMCTL为设定小数部分,其中 UxBR1为高位,UxBR0为低位,两者结合起来为一个16位的字。 举例说明:波特率=115200,时钟源=8MHz ,为外部晶体振荡器 N=8000000/115200=69.44
[单片机]
基于PIC18单片机的Bootloader设计
Bootloader是操作系统在内核运行之前运行的一段小程序,其功能主要是完成软硬件设备初始化,建立内存空间映射,从而将系统的软硬件环境带到一个合适的状态,或者加载操作系统映像文件实现系统软件升级,以便为最终调用操作系统内核准备好正确的环境。通常,BootLoader是严重地依赖于硬件而实现的,特别是在嵌入式世界。因此,在嵌入式世界里建立一个通用的BootLoader几乎是不可能的。   针对PIC18系列单片机,目前市面上仅存在HI-TECH公司提供的Bootloader程序,并且需要借助串口调试助手。本文基于Microchip公司的MPLAB软件开发环境设计了一种新颖的Bootloader,并配套编写了PC机端上位机界
[单片机]
基于PIC18<font color='red'>单片机</font>的Bootloader设计
实时单片机通讯网络中的内存管理
      摘要:为提高单片机通讯的实时性,采用了动态的内存管理方法,并将其应用到AUTO 2000DCS系统中,获得了满意的效果。      关键词: 动态分区 静态分区 最先适应法 内存表      在AUTO 2000 DCS系统中,我们采用了单片机实时通讯网络.这是一种具有不确定控制站监控的主从式总线网络.大致的工作过程是网络系统上电,各站点进行控制权争夺确立控制站和非控制站;控制站轮询各站点,被轮询的站点若有数据发送即成为主站,执行主机/从机的通讯;通讯结束后(无论成功与否)主站将控制权归还给控制站;控制站然后轮询下一个站点,周而复始。        为了提高通讯效率,采取了
[应用]
热门资源推荐
热门放大器推荐
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • 学习ARM开发(16)
    ARM有很多东西要学习,那么中断,就肯定是需要学习的东西。自从CPU引入中断以来,才真正地进入多任务系统工作,并且大大提高了工作效率。采 ...
  • 学习ARM开发(17)
    因为嵌入式系统里全部要使用中断的,那么我的S3C44B0怎么样中断流程呢?那我就需要了解整个流程了。要深入了解,最好的方法,就是去写程序 ...
  • 学习ARM开发(18)
    上一次已经了解ARM的中断处理过程,并且可以设置中断函数,那么它这样就可以工作了吗?答案是否定的。因为S3C44B0还有好几个寄存器是控制中 ...
  • 嵌入式系统调试仿真工具
    嵌入式硬件系统设计出来后就要进行调试,不管是硬件调试还是软件调试或者程序固化,都需要用到调试仿真工具。 随着处理器新品种、新 ...
  • 最近困扰在心中的一个小疑问终于解惑了~~
    最近在驱动方面一直在概念上不能很好的理解 有时候结合别人写的一点usb的例子能有点感觉,但是因为arm体系里面没有像单片机那样直接讲解引脚 ...
  • 学习ARM开发(1)
  • 学习ARM开发(2)
  • 学习ARM开发(4)
  • 学习ARM开发(6)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved