upD79F8513A(NEC)或upD78F0511A(NEC)之定时器TM50
来源:互联网 发布:蒙泰端口设置 编辑:程序博客网 时间:2024/06/14 02:49
本篇博文最后修改时间:2017年09月15日 14:00。
一、简介
本文以upD79F8513A(NEC)或upD78F0511A(NEC)编程为例,介绍upD79F8513A(NEC)或upD78F0511A(NEC)之定时器TM50初始化100us进一次中断。
二、实验平台
电脑平台:Windows7 64位旗舰
编译软件:PM+ V6.30
硬件平台:upD79F8513A(NEC)或upD78F0511A(NEC)
三、版权声明
博主:_懵懂
声明:此博客仅供参考不做任何商业用途,最终解释权归原博主所有。
原文地址:http://blog.csdn.NET/qq_18842031
QQ:951795235
E-mail :951795235@qq.com
懵懂之MCU交流群:136384801
四、实验前提
1、在进行本文步骤前,请先安装PM+ V6.30版本;准备好upD79F8513A(NEC)或upD78F0511A(NEC)硬件平台。
五、基础知识
暂无
六、源码地址
暂无
七、关联文章
链接:暂无
八、实验内容
1.系统时钟初始化为外部8M
参考http://blog.csdn.net/qq_18842031/article/details/77984026
2.编写TM50初始化函数
/********************************************************************* * @fn Init_TM50() * * @brief 初始化定时器50 100us进一次中断 * * @param None. * * @return None. ********************************************************************/norec void Init_TM50(void){ TMIF50 = 0; /*清除中断标志位*/ TMMK50 = 1; /*禁止中断服务*/ TMC50 = 0; TCL50 = 0x04; //设置时钟为 Fx/4 8MH/4=2MH 0.5us CR50 = 199; //100us TMIF50 = 0; TMMK50 = 0; TCE50 = 1;}
3.编写主函数
/********************************************************************** pragma**********************************************************************/#pragma SFR /*程序中可以直接使用数据手册上描述的特殊寄存器名*/#pragma DI /*关全局中断*/#pragma EI /*开全局中断*/#pragma NOP /*允许嵌入NOP指令*/#pragma ASM /*允许嵌入汇编指令*/#pragma STOP /*允许嵌入STOP指令*/#pragma HALT /*允许嵌入HALT指令*/#pragma interrupt INTTM50 INT_TM50//#include<> /*这里包含文件*/__interrupt void INT_TM50(void); //这句放在main函数前面#define W5NOP NOP();NOP();NOP();NOP();NOP() /*5个空指令*/void main(void){ DI(); NOP();/*嵌入汇编是清空内存*//*注意事项:1. #asm #endasm __asm 只能小写2. 汇编程序段中的标号必须以"?L"开头3. 调用C程序中的子程序,必须在子程序名前增加 "_" ;CALL !_CPU_init*/#asm;清RAM MOVW HL ,#0FB00H?LRAM_CLEAR: MOV A, #0 MOV [HL],A INCW HL MOVW AX,HL CMPW AX,#0FEDFH BC $?LRAM_CLEAR#endasm/*嵌入汇编*/ __asm(" MOV A,#0 "); EI(); Init_OST(); //初始化时钟 Init_TM50();//初始化定时器 while(1) { WDTE = 0xAC; }}
4.编写中断服务函数
/********************************************************************* * @fn INT_TM50() * * @brief TM50中断服务函数 100us * * @param None. * * @return None. ********************************************************************/__interrupt void INT_TM50(void){/*100us进来一次*/}
阅读全文
0 0
- upD79F8513A(NEC)或upD78F0511A(NEC)之定时器TM50
- upD79F8513A(NEC)或upD78F0511A(NEC)之定时器H0
- upD79F8513A(NEC)或upD78F0511A(NEC)之串口6
- upD79F8513A(NEC)或upD78F0511A(NEC)之电源电压检测
- upD79F8513A(NEC)或upD78F0511A(NEC)之AD采样
- upD79F8513A(NEC)或upD78F0511A(NEC)之初始化外部8M晶振做系统时钟
- upD79F8513A(NEC)或upD78F0511A(NEC)之串口0中断发送和接收数据
- NEC
- 红外协议之NEC协议
- 红外协议之NEC协议
- 红外协议之NEC协议
- NEC API
- NEC Protocol
- NEC Protocol
- NEC笔记
- nec规范
- 红外遥控协议分析之:NEC协议
- nec KCD经验
- Java语言基础小结5
- std::lock_guard 和 std::unique_lock的区别
- Python笔记--函数式编程
- eclipse中使用Lombok
- jq文字垂直滚动/滚屏效果
- upD79F8513A(NEC)或upD78F0511A(NEC)之定时器TM50
- Oracle中rownum与order by排序问题
- bzoj3718: [PA2014]Parking
- MySQL导出csv文件并分割成多列
- [LeetCode]Longest Substring Without Repeating Characters
- python_test_1
- ROSBridgeWebSocketConnection使用札记
- php -- 魔术方法、魔术常量 简单介绍
- 常用正则表达式大全