松翰单片机开发环境code option没有

松翰单片机外部中断程序 - 其他技术 - 电子工程世界网
松翰单片机外部中断程序
14:24:14来源: 51hei
&chip sn8f27e65//{{SONIX_CODE_OPTION//完整源码下载: /f/shwbzd.rar &.Code_Option WDT_CLK& Flosc/4&.Code_Option Reset_Pin P04&.Code_Option LVD& LVD_Max& ; 3.3V Reset&.Code_Option Watch_Dog Disable& ;关闭看门狗&.Code_Option Low_Fcpu Flosc/1&.Code_Option High_Clk IHRC_16M ; Internal 16M RC Oscillator&.Code_Option High_Fcpu Fhosc/1&.Code_Option Security Enable&.Code_Option Noise_Filter Enable//}}SONIX_CODE_OPTION.DATA;数据&ORG& 0&TEMP& DS& 1&ACCBUF& DS& 1&PflagBUF DS& 1&K& DS 1.CONST &K1 EQU K.0;标志位.CODE;程序代码&&ORG 0000H&JMP A1&ORG 09H;入口&JMP INT00A1: MOV A,#02H;设置中断触发方式为低电平触发&B0MOV PEDGE,A&B0BCLR FP00IRQ;清中断标志&B0BSET FP00IEN;开中断&B0BSET FGIE;开总中断&B0BSET K1 ;设置标志&JMP $;*************************************************;中断服务程序;*************************************************INT00: &B0BCLR FP00IEN;关中断&B0BCLR FGIE;禁止中断&B0XCH A,ACCBUF;压栈&B0MOV A,PFLAG;&B0MOV PFLAGBUF,A;&B0BTS1 FP00IRQ;判断是否真的发生中断&JMP INT01&&B0BTS1 K1;判断标志来控制状态标志为1LED亮&JMP K01&B0BCLR K1;标志清0&B0BSET P0M.3;设置P0.3为输出模式&B0BCLR P0.3;点亮LED;*******************************************;按键去抖;*******************************************K00: CALL M001;延时&B0BCLR P0M.0;设置P0.0为输入模式&B0BSET P0UR.0;设置P0.0上拉&B0BTS1 P0.0;判断P0.0是否为0是继续否跳过下一条指令&& &JMP K00&&CALL M001&B0BCLR P0M.0&B0BSET P0UR.0&B0BTS1 P0.0;判断P0.0是否为0是继续否跳过下一条指令&& &JMP K00&JMP INT01K01:&B0BTS0 K1&JMP INT01 &B0BSET K1&B0BSET P0M.3&B0BSET P0.3K02: &CALL M001&B0BCLR P0M.0&B0BSET P0UR.0&B0BTS1 P0.0;判断P4.0是否为1是继续否跳过下一条指令&& &JMP K02&CALL M001&B0BCLR P0M.0&B0BSET P0UR.0&B0BTS1 P0.0;判断P4.0是否为1是继续否跳过下一条指令&& &JMP K02INT01:&B0MOV A,PFLAGBUF;弹栈&B0MOV PFLAG,A&B0XCH A,ACCBUF&B0BCLR FP00IRQ&B0BSET FP00IEN&B0BSET FGIE&RETI;*********************************************;延时子程序;*********************************************M001: MOV A,#200&MOV 50H,AM002: MOV A,#250&MOV 51H,AM003: DECMS 51H&JMP M003&DECMS 50H&JMP M002 &RET&ENDP
关键字:&&
编辑:什么鱼 引用地址:
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
微信扫一扫加关注 论坛活动 E手掌握
微信扫一扫加关注
芯片资讯 锐利解读
大学堂最新课程
汇总了TI汽车信息娱乐系统方案、优质音频解决方案、汽车娱乐系统和仪表盘参考设计相关的文档、视频等资源
热门资源推荐
频道白皮书
何立民专栏
北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。(window.slotbydup = window.slotbydup || []).push({
id: '4540180',
container: s,
size: '250,200',
display: 'inlay-fix'
热门资料排行
添加成功至
资料评价:
所需积分:1松翰单片机内部8位分辨率ADC
单片机&嵌入式
单片机应用
嵌入式操作系统
学习工具&教程
学习和开发单片机的必备工具
(有问必答)
(带你轻松入门)
电子元件&电路模块
当前位置: >>
>> 浏览文章
松翰单片机内部8位分辨率ADC
;目的学习内部8位分辨率ADC及数据处理
;完整代码下载:
&CHIP&&&& SN8F27E65
//{{SONIX_CODE_OPTION
&.Code_Option WDT_CLK& Flosc/4
&.Code_Option Reset_Pin P04
&.Code_Option LVD& LVD_Max& ; 3.3V Reset
&.Code_Option Watch_Dog Disable& ;关闭看门狗
&.Code_Option Low_Fcpu Flosc/1
&.Code_Option High_Clk IHRC_16M ; Internal 16M RC Oscillator
&.Code_Option High_Fcpu Fhosc/1
&.Code_Option Security Enable
&.Code_Option Noise_Filter Enable
//}}SONIX_CODE_OPTION
&DATAC EQU P4M
&DATA EQU P4
&LEDC EQU P0M
&LED EQU P0
.DATA;数据
&TEMP& DS 1
&ACCBUF& DS 1
&PflagBUF DS 1
.CODE;程序代码
&ORG 0000H
&ORG 000BH
&ORG 0015H
A0: B0BCLR FT0IEN;关闭T0中断
&B0BCLR FT0ENB;禁止T0中断
&MOV A,#16;设置T0时钟
&B0MOV T0M,A;
&MOV A,#16;装初值
&B0MOV T0C,A;
&B0BCLR FT0IRQ;清中断标志
&B0BSET FT0IEN;开T0中断
&B0BSET FT0ENB;允许T0中断
&B0BSET FGIE;开总中断
&MOV A,#3;显示值
&MOV 41H,A
&MOV A,#2;显示值
&MOV 42H,A
&MOV A,#1;显示值
&MOV 43H,A
&MOV A,#0;显示值
&MOV 44H,A
;*********************************************
;*********************************************
A1: MOV A,#B ;显示位码
&MOV 31H,A
&MOV A,#4;显示位数
&MOV 33H,A
&B0MOV H,#0 ; 清&H&以寻址RAM bank 0。
&B0MOV L,#41H ; 设定寄存器地址。
&CLR ADM;清ADC 模式寄存器ADM
&CLR ADR;清ADR寄存器
&B0MOV P5CON,A;选择P5.0为ADC输入通道
&B0MOV P5M,A;设置P5口为输入模式
&B0MOV P5UR,A;禁止P5口为上拉模式
&B0BSET FADENB;ADC使能
&CALL M005;延时
&OR ADM,A;设置ADCHS[3:0]选择ADC 输入通道
&B0BSET FGCHS;使能ADC 输入通道
&B0BSET FADS;开始AD 转换。
&B0BTS1 FEOC; 判断是否转换完成
;*************************
; MOV A,ADB
&MOV 60H,A
&MOV A,ADB;8位模式下转换后数据存在ADB中
&MOV 61H,A
;****************************
&CALL CL1;调用数据处理
&MOV A,64H;将处理后的数据显示出来
&MOV 44H,A;千位
&MOV A,63H
&MOV 43H,A;百位
&MOV A,62H
&MOV 42H,A;十位
&MOV A,61H
&MOV 41H,A;个位
&B0BCLR FEOC;清标志
&CALL M008;延时
;*********************************************
;*********************************************
T0: B0BCLR FT0IEN;关T0中断
&B0BCLR FT0ENB;禁止T0中断
&B0XCH A,ACCBUF;压栈
&B0MOV A,PFLAG;
&B0MOV PFLAGBUF,A;
&MOV A,#0FFH;清显示
&B0MOV DATAC,A;
&B0MOV DATA,A;
&MOV A,#0FFH;
&B0MOV LEDC,A;
&MOV A,#0FFH;
&B0MOV LED,A;
&MOV A,#0FFH;设置为输出口
&B0MOV DATAC,A;
&B0MOV Y,#Q1$M;编码表地址
&B0MOV Z,#Q1$L;编码表地址
&B0MOV A, @HL;间接寻址
&ADD Z,A;寻找要显示编码
&MOVC ;查表高八位存在R低八位存在ACC
&B0MOV DATA,A;数据输出
&MOV A,#0FFH;设为输出口
&B0MOV LEDC,A
&MOV A,31H;位码
&B0MOV LED,A
&MOV A,31H;处理位码的数由于没有RL只有RLC现在这里处理C
&MOV 32H,A
&RLCM 31H;移动位码
&INCMS L;显示数据控制寄存器处理
&CALL M001;延时提高亮度
&MOV A,#0FFH;清显示
&B0MOV DATAC,A
&B0MOV DATA,A
&MOV A,#0FFH
&B0MOV LEDC,A
&MOV A,#0FFH
&B0MOV LED,A
&DECMS 33H;自动减1判断是否也显示完成
&MOV A,#B ;显示位码
&MOV 31H,A
&MOV A,#4;显示位数
&MOV 33H,A
&B0MOV H,#0 ; 清&H&以寻址RAM bank 0。
&B0MOV L,#41H ; 设定寄存器地址。
&B0MOV A,PFLAGBUF;弹栈
&B0MOV PFLAG,A;
&B0XCH A,ACCBUF;
&MOV A,#16;设T0时钟
&B0MOV T0M,A;
&MOV A,#16;重装初值
&B0MOV T0C,A;
&B0BCLR FT0IRQ;清中断标志
&B0BSET FT0IEN;开中断
&B0BSET FT0ENB;允许中断
&B0BSET FGIE;开总中断
;******************************
; MOV A,#60H
; MOV 62H,A
; MOV A,#b
; MOV 61H,A
;***************************
&MOV A,65H
&MOV 60H,A
&MOV 62H,A;十位
&MOV A,65H
&MOV 61H,A;个位
&MOV A,63H;万位
&MOV 65H,A
&MOV A,64H
&MOV 63H,A;百位
&MOV A,64H
&MOV 64H,A
&SWAPM 64H;千位
CL2: MOV A,#0
&MOV 63H,A
&MOV 64H,A
&MOV 65H,A
&MOV A,#16
&MOV 67H,A
CL3: B0BCLR FC
&RLCM 61H;(低8位)
&RLCM 60H;(高8位)
&MOV A,65H;个十位
&ADC A,65H;
&MOV 65H,A;
&MOV A,64H;百千位
&ADC A,64H;
&MOV 64H,A;
&MOV A,63H;万位
&ADC A,63H;
&MOV 63H,A;
&DECMS 67H;
;******************************************
;延时子程序
;******************************************
M001: MOV A,#1
&MOV 51H,A
M002: MOV A,#24
&MOV 52H,A
M003: MOV A,#250
&MOV 53H,A
M004: DECMS 53H
&DECMS 52H
&DECMS 51H
M005: MOV A,#200
&MOV 55H,A
M006: DECMS 55H
&JMP M006&
M007: MOV A,#1
&MOV 56H,A
M008: MOV A,#20
&MOV 57H,A
M009: MOV A,#250
&MOV 58H,A
M010: DECMS 58H
&DECMS 57H
&DECMS 56H
;******************************************
;******************************************
Q1:&& DW&&&& 00C0H&&&&&&& ;0
&&&&& DW&&&& 00F9H&&&&&&& ;1
&&&&& DW&&&& 00A4H&&&&&&& ;2
&&&&& DW&&&& 00B0H&&&&&&& ;3
&&&&& DW&&&& 0099H&&&&&&& ;4
&&&&& DW&&&& 0092H&&&&&&& ;5
&&&&& DW&&&& 0082H&&&&&&& ;6
&&&&& DW&&&& 00F8H&&&&&&& ;7
&&&&& DW&&&& 0080H&&&&&&& ;8
&&&&& DW&&&& 0090H&&&&&&& ;9
&&&&& DW&&&& 0088H&&&&&&& ;A
&&&&& DW&&&& 0083H&&&&&&& ;B
&&&&& DW&&&& 00C6H&&&&&&& ;C
&&&&& DW&&&& 00A1H&&&&&&& ;D
&&&&& DW&&&& 0086H&&&&&&& ;E
&&&&& DW&&&& 008EH&&&&&&& ;F
&&&&& endp
【】【】【】【】
上一篇:下一篇:
CopyRight @
单片机教程网
, All Rights ReservedSONIX单片机培训教材-海文库
全站搜索:
您现在的位置:&>&&>&IT认证
SONIX单片机培训教材
SONiX单片机培训教材
Preliminary 0.1
松翰科技(深圳)有限公司2007年9月
松翰科技股份有限公司 SONiX TECHNOLOGY CO., LTD目
I/O端口.......................................................................................................................................................5§1.1概
述...................................................................................................................................................................5§1.2基本结构及相关寄存器..........................................................................................................................................61.2.1
I/O端口的基本结构.......................................................................................................................................61.2.2
I/O端口的相关寄存器...................................................................................................................................6§ 1.3 I/O的编程实例...................................................................................................................................................71.3.1
输入口使用....................................................................................................................................................71.3.2
输出口使用....................................................................................................................................................71.3.3
I/O电气参数.................................................................................................................................................8§1.4 I/O口设计技巧..................................................................................................................................................101.4.1
I/O基本设计要求........................................................................................................................................101.4.2
I/O切换设计...............................................................................................................................................111.4.3
I/O电平匹配设计........................................................................................................................................111.4.4
I/O睡眠状态时设计.....................................................................................................................................111.4.5
I/O设计实例...............................................................................................................................................12§1.5 同步实验-I/O口输出.......................................................................................................................................13§1.6 本章小结............................................................................................................................................................14第2章 定时/计数器的使用............................................................................................................................................15§2.1
概述.................................................................................................................................................................152.1.1
定时/计数器基本概念..................................................................................................................................152.1.2
SONIX定时/计数器的特点.........................................................................................................................16§2.2基本结构及相关寄存器......................................................................................................................................182.2.1
基本定时器T0............................................................................................................................................182.2.2
定时/计数器TC0.........................................................................................................................................192.2.3
定时/计数器TC1.........................................................................................................................................21§2.3 定时/计数器编程实例........................................................................................................................................232.3.1
怎样使用定时计数器来定时........................................................................................................................232.3.2
怎样使用TC0/TC1来计数..........................................................................................................................23§2.4
定时/计数器的设计技巧...................................................................................................................................242.4.1
定时/计数器的基本要求..............................................................................................................................242.4.2
定时器设计实例..........................................................................................................................................24§2.5
同步实验-定时...............................................................................................................................................25§2.6
本章小结.........................................................................................................................................................27第3章 中断的使用........................................................................................................................................................28§3.1 概 述.................................................................................................................................................................28§3.2 中断源...............................................................................................................................................................29§3.3 中断响应过程....................................................................................................................................................30§3.4 中断处理的流程.................................................................................................................................................32§3.5 中断相关寄存器.................................................................................................................................................34§3.6 中断的编程实例.................................................................................................................................................363.6.1
中断现场保护问题.......................................................................................................................................363.6.2
单中断处理..................................................................................................................................................373.6.3
多中断处理..................................................................................................................................................38§3.7中断的设计技巧..................................................................................................................................................413.8 同步实验-异步串行通信....................................................................................................................................423.9 本章小结.............................................................................................................................................................47第4章 计时系统的设计................................................................................................................................................48§4.1 概述...................................................................................................................................................................48§4.2 基本时间间隔计时系统设计...............................................................................................................................494.2.1
利用指令累加实现.......................................................................................................................................494.2.2
利用比较定时/计数器T0C/TC0C/TC1C的值.............................................................................................514.2.3
利用定时器中断:.......................................................................................................................................514.2.4
基本时间间隔计时设计技巧........................................................................................................................52§4.3 钟表时间的计时系统设计..................................................................................................................................534.3.1
选用带RTC功能的IC设计........................................................................................................................534.3.2
选用带有自动重装功能定时器TC0/TC1.....................................................................................................55 SOSONiX TECHNOLOGY CO., LTD.
Preliminary V0.1 NiX松翰科技股份有限公司 SONiX TECHNOLOGY CO., LTD4.3.3
选用普通定时器T0.....................................................................................................................................564.3.4
外部日历芯片..............................................................................................................................................564.3.5
通信产品上位机系统对时............................................................................................................................564.3.6
通过无线对时间 (GPS and Radio control clock RCC)...............................................................................574.3.7
钟表时间的计时设计技巧............................................................................................................................57§4.4 红外遥控发射计时系统设计...............................................................................................................................584.4.1
红外发射基础知识.......................................................................................................................................584.4.2
编码协议分析:..........................................................................................................................................604.4.3
发射载波设计:..........................................................................................................................................614.4.4
位元码及引导码时间间隔设计.....................................................................................................................634.4.5
红外遥控发射计时设计技巧........................................................................................................................65§4.5 同步试验-红外线遥控......................................................................................................................................66§4.6 本章小结............................................................................................................................................................67第5章 按键接口设计....................................................................................................................................................68§5.1 概述...................................................................................................................................................................685.1.1
键盘分类.....................................................................................................................................................685.1.2
按键介绍.....................................................................................................................................................68§5.2 键盘基础知识....................................................................................................................................................695.2.1
按键输入特点..............................................................................................................................................695.2.2
按键的确认..................................................................................................................................................695.2.3
消除按键抖动措施.......................................................................................................................................705.2.4
键盘工作方式..............................................................................................................................................71§5.3独立式键盘接口设计..........................................................................................................................................725.3.1
独立式键盘特点..........................................................................................................................................725.3.2
常见的接口电路及工作原理:.....................................................................................................................725.3.3
独立键盘设计实例.......................................................................................................................................745.3.4
独立式键盘设计技巧...................................................................................................................................785.3.5
同步实验-独立式键盘...............................................................................................................................79§5.4矩阵式键盘接口设计..........................................................................................................................................805.4.1
矩阵式键盘的特点.......................................................................................................................................805.4.2
矩阵式键盘的接口电路及工作原理.............................................................................................................805.4.3
矩阵式键盘设计实例...................................................................................................................................815.4.4
矩阵式键盘设计技巧...................................................................................................................................865.4.5
同步实验-矩阵式键盘...............................................................................................................................90§5.5 LED显示与按键扫描端口共用的接口设计.........................................................................................................915.5.1
LED显示和按键扫描共用端口的特点:.....................................................................................................915.5.2
LED显示和按键扫描共用端口的接口电路及工作原理................................................................................915.5.3
LED显示和按键扫描共用端口设计实例.....................................................................................................925.5.4
LED显示和按键扫描共用端口的设计技巧..................................................................................................935.5.5
同步实验-七段数码管显示........................................................................................................................945.6本章小结...............................................................................................................................................................98第6章 案例设计-跑马灯......................................................................................................................................99§6.1概述...................................................................................................................................................................99 §6.2基本软件设计思想............................................................................................................................................1006.2.1
软件设计思想需求分析.............................................................................................................................1006.2.2
任务的分时处理........................................................................................................................................1036.2.3
层次化设计的编程思想.............................................................................................................................106 §6.3案例开发过程...................................................................................................................................................1116.3.1
运行程序...................................................................................................................................................111第7章 模/数转换器ADC......................................................................................................................................113 §7.1
概述...............................................................................................................................................................1137.1.1
ADC种类与特点.......................................................................................................................................1137.1.2
ADC转换的过程.......................................................................................................................................1147.1.3
ADC器件的工作原理................................................................................................................................1167.1.4
A/D转换器的性能指标..............................................................................................................................118 §7.2
基本结构及控制寄存器..................................................................................................................................1207.2.1
ADC基本结构...........................................................................................................................................120 SOSONiX TECHNOLOGY CO., LTD.
Preliminary V0.1 NiX松翰科技股份有限公司 SONiX TECHNOLOGY CO., LTD7.2.2
相关的控制寄存器.....................................................................................................................................121 §7.3
ADC模块操作时间要求.................................................................................................................................1237.3.1
采样的时间要求........................................................................................................................................1237.3.2
A/D转换时间要求.....................................................................................................................................124 §7.4
编程注意事项.................................................................................................................................................1257.4.1
ADC软件注意事项...................................................................................................................................1257.4.2
PCB布局注意事项....................................................................................................................................1257.4.3
硬件设计注意事项.....................................................................................................................................126 §7.5
编程实例........................................................................................................................................................1277.5.1
ADC 计算公式..........................................................................................................................................1277.5.2
ADC编程程序...........................................................................................................................................1277.5.3
ADC的正确处理.......................................................................................................................................128 §7.6 设计技巧..........................................................................................................................................................1297.6.1
采用12-bit ADC 的优势...........................................................................................................................1297.6.2
ADC应用设计...........................................................................................................................................1317.6.3
ADC数字滤波技术...................................................................................................................................133 §7.7同步实验..........................................................................................................................................................1357.7.1
实验目的...................................................................................................................................................1357.7.2
实验内容...................................................................................................................................................1357.7.3
实验指导...................................................................................................................................................1357.7.4
实验原理图................................................................................................................................................138 §7.8本章小结..........................................................................................................................................................139第8章 PWM控制................................................................................................................................................140 §8.1概述.................................................................................................................................................................1408.1.1
PWM原理.................................................................................................................................................1408.1.2
PWM控制的基本原理...............................................................................................................................1418.1.3
PWM控制信号的产生...............................................................................................................................142 §8.2基本结构和控制寄存器.....................................................................................................................................1438.2.1
PWM基本结构.........................................................................................................................................1438.2.2
PWM控制寄存器......................................................................................................................................143 §8.3编程实例..........................................................................................................................................................1458.3.1
PWM操作举例.........................................................................................................................................1458.3.2
连续调整占空比........................................................................................................................................1458.3.3
特殊PWM频率........................................................................................................................................1468.3.4
连续调整PWM频率.................................................................................................................................146 §8.4应用技巧..........................................................................................................................................................1478.4.1
直流电动机电枢的PWM调压调速原理....................................................................................................1478.4.2
PWM降压转换器应用...............................................................................................................................149 §8.5同步试验..........................................................................................................................................................1518.5.1
实验目的...................................................................................................................................................1518.5.2
实验内容...................................................................................................................................................1518.5.3
实验指导...................................................................................................................................................152 §8.6 本章小结..........................................................................................................................................................154第9章 串行EEPROM与 MCU 的接口设计.............................................................................................................155 §9.1 概述.................................................................................................................................................................155 §9.2 MCU与I2C? EEPROM通信.........................................................................................................................1569.2.1
I2C? EEPROM 介绍...............................................................................................................................1569.2.2
I2C?时序特点..........................................................................................................................................1579.2.3
范例分析...................................................................................................................................................159 §9.3
MCU 与Microwire EEPROM通信...............................................................................................................1639.3.1
Microwire EEPROM 介绍........................................................................................................................1639.3.2
Microwire时序特点...................................................................................................................................1649.3.3
范例分析...................................................................................................................................................167 SOSONiX TECHNOLOGY CO., LTD.
Preliminary V0.1 NiX松翰科技股份有限公司SONiX TECHNOLOGY CO., LTD第1章
I/O端口§1.1 概
述在接触那些正式的定义之前,我们先来谈谈我们身边的一些熟悉的事物吧!我们身边的可程序控制的大小电子产品太多,真可谓枚不胜举!大一点的冰箱、洗衣机、微波炉、电磁炉,小一点的咖啡壶、热水壶、电风扇乃至一个小小的遥控器,真是无所不在,好像也无所不能哦!其实,他们都自我构成一个完整的系统,这个系统可以很复杂,也可以很简单。然他们都是一个与人相互交互的系统,大致如下图所示:SO这个系统对用户而言,内部处理是一个透明的层,用户可以不管内部是如何处理的。大多数情况下,用户只需简单地按几下按键,或调节一下旋钮,冰箱就会自动降到相应得温度,洗衣机就会在相应的时间内将衣服洗好。其实用户就是输入端输入自己的需求,输出端得到自己需要的相应结果,这就是我们所说的控制。 常见的输入方式大概有按键、旋钮等等,操作越简单越好。 输出方式根据需求就可能很多了,可能是电机带动物体位移或转动,也可能是时间、状态的显示,或者是声音提示。总之是对用户输入的反馈! 而对于主要工作是开发的工程人员来说,深入分析内部处理的过程则是最重要的职责。 从内部处理的角度,我们首先要考虑一个问题,就是我们如何得到外部的输入呢?其实,上面谈到的按键等输入设备都是通过I/O端口读取进来的。这样说来,I/O端口便成为MCU与外部设备打交道的必经之口。I/O端口是SonixMcu与外部设备打交道的必经之口。输入端口负责从外界接收检测信号,按键信号等等各种开关量信号。输出口负责向外界输送由内部电路产生的处理结果、显示信息、控制命令、驱动信号等等。I/O口是“人-机对话”的通道。通用的I/O引脚可以看成最简单的外设,为了增加器件的灵活性和功能,一些引脚定义为多功能复用引脚。这些功能由器件上相应外设的特点决定。一般来说,当相应的外设使能时,其对应的引脚不能做为通用的I/O口引脚使用。 在SN8P2708A系列单片机中,有6个端口,分别是P0,P1,P2,P3,P4,P5一共是36个I/O,每个端口都由数量不超过8条的口线构成。每个端口中每个引脚都可以用软件的方式由用户按需要独立编程,设为输入或者输出引脚。P0包括3个引脚,同时也是外部中断/外部计数器的输入端。P1口包括8个引脚,其中P1.0,P1.1是Open Drain结构。P2口包括8个引脚,P3口包括一个引脚。P4口包括8个引脚,同时又可以做为ADC输入通道。P5口一共包括8个引脚,同时还作为其它功能复用,如PWM,Buzzer,SIO等,这样可以给客户开发不同的项目带来极大的灵活性。本章只介绍这些端口共同具备的基本输入/输出功能、基本电路结构和基本用法,至于某些引脚的其它功能请参考其它相关章节。SONiX TECHNOLOGY CO., LTD.
Preliminary V0.1 Ni
松翰科技股份有限公司SONiX TECHNOLOGY CO., LTD§1.2 基本结构及相关寄存器1.2.1
I/O端口的基本结构图1-1是一个典型的双向I/O口的基本机构,主要包括I/O输入输出模式寄存器PnM,输入整形电路,输入上拉电阻控制寄存器PnUR,输出锁存器,输出驱动电路,输入寄存器,输出寄存器等等。它没有画出I/O口引脚复用的外设功能,读PORT寄存器是读引脚的电平状态,而写PORT寄存器是将数据写入端口的数据锁存器。所有的写操作(如BTS1和BTS0指令)都是读-修改-写入操作。因此对一个端口进行写入操作意味总是先读取端口引脚电平,在修改这个值,然后写入端口锁存器。另外,COMS集成电路是极易被静电和高压侵入而损坏。为了防止这类损坏,通常在高压入侵的途径-外接引脚上,设置关卡-钳位电路,如下图两个二极管就是钳位保护作用,将Pin脚上的输入电压限制在VSS-0.7V~VDD+0.7V(0.7V是二极管的正向导通电压)范围内。平时,引脚上电平正常时两个二极管截止。当Pin上的电压高于VDD+0.7V时,上面的二极管导通,将Pin内部电压钳制在VDD+0.7V上,当Pin上的电压低于VSS-0.7V时,下面的二极管导通,将Pin内部电压钳制在VSS-0.7V上。SONiX MCU 所有的I/O上都有都有这两个钳位保护二极管。
图1-1 双向IO结构框图1.2.2
I/O端口的相关寄存器一、 输入/输出控制寄存器PnM如果设为1则为输出模式,为0则为输入模式,上电复位默认为输入模式。可以单独操作(位操作)也可以端口操作。注意:n表示0~5中的任意数据,如P0M:表示P0口的模式寄存器。如:B0bset
P2M.0将P2.0口设为输出口
a,#B将P2.0口设为输出口,其它的设为输入口B0mov
二、上拉电阻通断控制寄存器PnUR如果设为1则上拉电阻有效,为0则无效,上电复位默认为无效。只可以端口操作。如:Mov
a,#B将P2.0口的上拉电阻设为有效,其它的无效B0mov
P2UR,a注意:因为PnUR是一个仅写的寄存器,所以在使用仿真器ICE时,看不到你所设置的值。
三、输入/输出数据寄存器PnMCU通过该寄存器从端口读入数据,或者将数据写到端口。可以单独操作(位操作)也可以端口操作。
a,P2将P2端口的数据读入寄存器B0mov
P2.0读P2.0口的状态Nop
a,#B将P2全部清零。B0mov
P2.0将P2.0置1SO
SONiX TECHNOLOGY CO., LTD.
Preliminary V0.1松翰科技股份有限公司 SONiX TECHNOLOGY CO., LTD§ 1.31.3.1 输入口使用
I/O的编程实例 I/O口是人机打交道的渠道,对I/O的操作无非就是读和写,读Pn寄存器将读出I/O引脚的状态,而写Pn寄存器将写道端口数据锁存器。在读写之前一定要先初始化方向寄存器。要将I/O作为输入口用时,需要按照以下步骤来设置:一、设定IO方向寄存器PnM将方向寄存器内容设为为0时,相应的I/O为输入口二、设定上拉电阻有效或者无效 PnUR当上拉电阻寄存器内容设为0时相应的位的上拉电阻无效,设为1,则有效。当输入口上拉电阻为无效时则该IO处于高阻态。三、读入端口状态将Pn读入ACC,或者位判断,即可以端口操作,也可以位操作。【设计实例】读入P2口的数据Mov
a,#00将P2口设为输入口B0mov
a,#0FFH所有的上拉电阻都有效B0mov
P2UR,aNopNopB0mov
a,P2读入P2口状态,保存到wk00中B0mov
1.3.2 输出口使用
SO要将I/O作为输出口用时,需要按照以下步骤来设置: 一、设定I/O方向寄存器PnM 将方向寄存器内容设为为1时,相应的I/O为输出口 二、写输出口
例如:P2口的数据
a,#0FF将P2口设为输出口
a,#0fhB0mov
P2,将P2口电平置为0FH
SONiX TECHNOLOGY CO., LTD.
Preliminary V0.1 NiX松翰科技股份有限公司 SONiX TECHNOLOGY CO., LTD
I/O电气参数I/O口在使用时,因为各个芯片的电路特性不一样,所以很多电气特性不一样,这里只讲sonix SN8P2708的几个主要的电气参数。一、上拉电阻阻值1.跟供电电压有关,在5VDC时,一般为100K,在3VDC时,一般为200K。2.上拉电阻在IC内部是MOS管,我们所说的上拉电阻大小是等效电阻的大小。3.下面介绍两种方法来测两I/O口的上拉电阻,如下图所示:SO
上拉电阻的测量原理图 假设IC 的电源电压VDD=5V,R1的阻值用R1表示,电流表的读数为I1,上拉电阻用R2表示: 首先在软件中,要将I/O设置为输入上拉模式
图(a)的测试原理:调整可调电阻R1,使I/O处的电压为1/2VDD=2.5V;则可调电阻的大小,就是上拉电阻的等效值。
图(b)的测试原理:上拉电阻R2=VDD/I1 注意:上拉电阻的等效电阻,因为IC加工工艺的原因,精度不是很高。(即在VDD一样的条件下,可能每一颗的等效电阻都不一样)。
二、I/O输出电流 1、 I/O口拉电流: 拉电流是指当I/O为输出口并且输出为高电平时,对外部电路驱动能力的强弱。电流越大,驱动能力越强。SN8P2708IO的拉电流最大为12mA。测量方法如下图(a)所示:调整可调R1的大小,使I/O的输出电压为VDD-0.5,此时电流为Ioh=(VDD-0.5)/R1,即最大的拉电流。
I/O输出电流测试原理图2、 I/O口灌电流:灌电流是指当I/O为输出口并且输出为低电平时,外部电路电流倒灌到MCU内部的电流。SN8P2708IO的灌电SONiX TECHNOLOGY CO., LTD.
Preliminary V0.1 NiX松翰科技股份有限公司 SONiX TECHNOLOGY CO., LTD流最大为15mA。测试方法如上图(b)所示:调整可调R1的大小,使I/O的输出电压为Vss+0.5,此时电流Iol=(VDD-VSS-0.5)/R2,即最大的灌电流。3.输入高电平电压:当输入口的电压为0.7VDD时,CPU就认为是高电平“1”。4.输入低电平电压:当输入口的电压为0.3VDD时,CPU就认为是低电平“0”。注意:关于SONIX系列MCU的具体电气参数,请参考datasheet的相关章节。
SOSONiX TECHNOLOGY CO., LTD.
Preliminary V0.1 NiX松翰科技股份有限公司 SONiX TECHNOLOGY CO., LTD§1.4
I/O口设计技巧1.4.1 I/O基本设计要求
一、输入口的正确设计1.按键输入口等容易 ESD 侵入的线路上应预留电阻或电容位置,必要时添加元器件以增强系统抗 ESD 能力2.设定芯片内部上拉电阻,防止悬浮时的信号侦测错误。芯片处于睡眠方式时,外部中断口和具有唤醒功能的 Input 口尤为引起注意3. 高抗干扰环境下,尽量不要使用外部中断检测信号
二、输出口的正确设计1. 带有高噪声的负载应设计有光耦隔离或吸噪声电路。2.采用危险性负载时可以考虑软件脉冲驱动,通过电容耦合方式进行。图a通过C1,MCU当机时三极管可自行关断。3. 负载应考虑芯片输出口的驱动能力,驱动电流不要过大,以及整个MCU的拉电流和灌电流。1)图b建议R2数值不可低于 330 欧姆。2)Ex. Idd = (5-1.7)/330 = 3.3/330=10mA。4. 驱动马达等元器件时应考虑硬件保护。1) 图c利用 R3 的电阻会自动关闭三极管。2) MCU复位 状态 I/O = Input , motor off。3)Vdd & 2.1V ----
Motor off,R2 = 2K,R3= 1K。SO
三、在干扰环境下工作在干扰环境下工作的设备,如键盘处于静电放电的环境中。由于躁声干扰,寄存器的内容将可能受影响。片内的看门狗会处理这种使程序处于锁死状态的情况。但是,I/O控制寄存器的内容受影响,即使一只引脚从输入状态变为输出状态,程序依然运行,在这时程序会从这一引脚上读入相同的值。这导致看门狗失效。例如键盘处于锁死状态而不会导致看门狗定时器溢出。所以建议在一定的时间内重新定义I/O的输入/输出状态。最好的解决办法是每次读写数据时设置I/O控制寄存器。当然大多数应用都不必这样做,这里只是提醒注意强躁声干扰。SONiX TECHNOLOGY CO., LTD.
Preliminary V0.1 NiX(a)
输入口的参考设计 (b)
输出口的参考设计松翰科技股份有限公司 SONiX TECHNOLOGY CO., LTD
1.4.2 I/O切换设计在某些情况下(如矩阵扫描键盘),需要频繁的切换I/O的输入输出模式,一般来说要按照以下步骤来切换:一、输入口切换到输出口步骤1. 设定I/O预定状态,即送预定值给Pn2. 切换输入/输出状态,即送“1”给PnM注意:从I/O的基本结构中,可以看出上拉电阻在切换成输出模式时,是无效的。所以可以不操作PnUR。二、输出口切换到输入口步骤1. 根据需要设定上拉电阻,即是否送“1”给PnUR2. 切换输入/输出状态,即送“0”给PnM3. 适当的延时,等待I/O口线上的状态稳定4. 读入I/O状态到CPU注意:从输出低电平切换到输入上拉时,建议采用以下步骤:输出低电平-?输出高电平―&输入上拉。另外,如果是使用位操作的方式来切换,必需要注意要每个位都按照上述步骤来切换,否则可能会出现状态切换错误现象。例如:B0BCLR
P1.1B0BCLR
P1.2B0BSET
P1M.1B0BSET
P1M.2以上是错误的操作方式,P1.1口有可能不能切换到低电平状态。
正确的操作方式如下:B0BLCR
P1.1B0BSET
P1.2B0BSET
1.4.3 I/O电平匹配设计SO1.4.4 I/O睡眠状态时设计 电平匹配问题通常在数据通讯时需要注意,如果通讯的两台设备的工作电压不一样,就需要考虑电平转化的问题。 电平转换传统的做法是通过二极管,三极管,或者光偶等元器件的方式来转换,也可以通过专用的电平转换芯片来转化。在CPU进入sleep mode之后,要尽可能减少待机电流。Sonix 单片机在外围电路设置正确的情况下,待机电流为1uA左右,所以进入睡眠时I/O的状态设置很重要,总的原则是不能产生漏电。可以分为以下几种情况:一、未使用的I/O:1.设置为输出模式:1)设置输出低电平,建议在PCB设计时将该I/O与VSS相连。2)设置输出高电平,建议在PCB设计时将该I/O与VDD相连。2.设置为输入模式:1)不使能上拉电阻,建议在PCB设计时将该I/O与VSS或VDD相连。2)使能上拉电阻,则可以不接或在PCB设计时将该I/O与VDD相连。二、输入口:请将上拉电阻使能,不能使IO为高阻态。注意:内部的上拉电阻是MOS管结构,使能并不会增加MCU的功耗。三、输出口:不能使外部电路漏电。注意:通过合理设置I/O口的输入输出特性,让IC能够唤醒。
SONiX TECHNOLOGY CO., LTD.
Preliminary V0.1 NiX
松翰科技股份有限公司SONiX TECHNOLOGY CO., LTD
1.4.5 I/O设计实例一、【设计实例】 用一个I/O控制2个单色指示灯由于单片机的I/O口,可以设置为三种状态,即输出高电平、输出低电平和输入状态(高阻态)。利用这一点,可以很方便的利用一个I/O对2个单色指示灯控制其电路如下图所示:1. 当要使LED1被亮时,I/O口可设置为低电平,此时LED2无电流流过,不会亮。2. 当要使LED2被亮时,I/O口可设置为高电平,此时LED1无电流流过,不会亮。3.
当要使LED1和LED2均不亮时,可以将I/O设置为高阻态,此时发光管被VD1旁路,也不灰亮。4. 当要使LED1和LED2一起亮时,则可以让I/O在某一固定频率下以50%的占空比进行高低电平不停的转换,利用视觉暂留,是人眼感觉两灯都为亮状态。二、【设计实例】用一个I/O控制1个三色指示灯其电路如下图所示:1.当要显示绿灯(LED1)亮时,I/O口可置为低电平,此时红灯(LED2)反向偏置,无电流流过,不会亮。2.当要显示红灯(LED2)亮时,I/O口可置为高电平,此时绿灯(LED1)反向偏置,无电流流过,不会亮。3.若要指示灯不亮,可将I/O置为高阻态,此时两个发光管均无电流通过,也不会亮。4.当要使LED1和LED2一起亮时,则可以让I/O在某一固定频率下以50%的占空比进行高低电平不停的转换,利用视觉暂留,是人眼感觉显示为橙色。三、【设计实例】一个I/O读取三种状态单片机应用中,有时需要用外部跳线选择设置,单片机按跳线的设置进行相应的控制操作。本例中用一个I/O检测出跳线连接的三种状态:高电平,低电平,悬浮(高阻态)。其电路如下图所示:1. 检测低电平状态:I/O口为输入状态,直接读取引脚上的低电平。2. 检测该电平状态:I/O口为输入状态,直接读取引脚上的高电平。3. 检测高阻状态:I/O口设置为输出态,输出高电平,然后设置I/O口为输入态,读取引脚的电平,为高电平;再把I/O口设置为输出态,输出低电平,读取引脚状态,为低电平。说明为高阻态。SO
(b)(c )图1-6
I/O设计SONiX TECHNOLOGY CO., LTD.
Preliminary V0.1
松翰科技股份有限公司SONiX TECHNOLOGY CO., LTD§1.5 同步实验-I/O口输出
一、实验目的熟悉I/O口的使用方法 。 二、实验内容1.设置I/O口的相关寄存器(PnUR,PnM,Pn,PnOC),熟悉I/O口的基本操作。
SONiX TECHNOLOGY CO., LTD.
Preliminary V0.1松翰科技股份有限公司 SONiX TECHNOLOGY CO., LTD§1.6 本章小结I/O口是所有单片机必备的资源,I/O是“人-机”对话的必经之路。
I/O在使用过程中要注意电平匹配,驱动电流等问题。 SOSONiX TECHNOLOGY CO., LTD.
Preliminary V0.1 NiX松翰科技股份有限公司 SONiX TECHNOLOGY CO., LTD第2章 定时/计数器的使用§2.1
概述在大多数的单片机应用系统中都要使用定时/计数器,所以几乎所有的单片机内部都有定时/计数器,定时/计数器模块是一种基本上普遍配置的常用的外设模块,只是配备的数量和规格不同而已,用以实现实时或延时控制,外部事件计数。2.1.1 定时/计数器基本概念一、计数概念的引入从选票的统计谈起:画“正”。这就是计数,生活中计数的例子处处可见。例:录音机上的计数器、家里面用的电度表、汽车上的里程表等等,再举一个工业生产中的例子,线缆行业在电线生产出来之后要计米,也就是测量长度,怎么测法呢?用尺量?不现实,太长不说,要一边做一边量呢,怎么办呢?行业中有很巧妙的方法,用一个周长是1米的轮子,将电缆绕在上面一周,由线带轮转,这样轮转一周不就是线长1米嘛,所以只要记下轮转了多少圈,就可以知道走过的线有多长了。
二、计数器的容量从一个生活中的例子看起:一个水盆在水龙头下,水龙没关紧,水一滴滴地滴入盆中。水滴不断落下,盆的容量是有限的,过一段时间之后,水就会逐渐变满。录音机上的计数器最多只计到999….那么单片机中的计数器有多大的容量呢?SONIX单片机中有两个计数器,分别称之为T0和TC1/TC0,这两个计数器分别是由两个8位的RAM单元组成的,即每个计数器都是8位的计数器,最大的计数量是256。
三、定时SONIX单片机中的计数器除了可以作为计数之用外,还可以用作时钟,时钟的用途当然很大,如打铃器,电视机定时关机,空调定时开关等等,那么计数器是如何作为定时器来用的呢?一个闹钟,我将它定时在1个小时后闹响,换言之,也可以说是秒针走了(3600)次,所以时间就转化为秒针走的次数的,也就是计数的次数了,可见,计数的次数和时间之间的确十分相关。那么它们的关系是什么呢?那就是秒针每一次走动的时间正好是1秒。结论:只要计数脉冲的间隔相等,则计数值就代表了时间的流逝。由此,单片机中的定时器和计数器是一个东西,只不过计数器是记录的外界发生的事情,而定时器则是由单片机提供一个非常稳定的计数源。那么提供组定时器的是计数源是什么呢?看图1,原来就是由单片机的晶振经过12分频后获得的一个脉冲源。晶振的频率当然很准,所以这个计数脉冲的时间间隔也很准。问题:一个12M的晶振,它提供给计数器的脉冲时间间隔是多少呢?当然这很容易,就是12M/12等于1M,也就是1个微秒。结论:计数脉冲的间隔与晶振有关,12M的晶振,计数脉冲的间隔是1微秒。
四、溢出让我们再来看水滴的例子,当水不断落下,盆中的水不断变满,最终有一滴水使得盆中的水满了。这时如果再有一滴水落下,就会发生什么现象?水会漫出来,用个术语来讲就是“溢出”。水溢出是流到地上,而计数器溢出后将使得FT0IRQ变为“1”。至于FT0IRQ是什么我们稍后再谈。一旦FT0IRQ由0变成1,就是产生了变化,产生了变化就会引发事件,就象定时的时间一到,闹钟就会响一样。至于会引发什么事件,我们下次课再介绍,现在我们来研究另一个问题:要有多少个计数脉冲才会使FT0IRQ由0变为1。
五、任意定时及计数的方法刚才已研究过,计数器的容量是8位,也就是最大的计数值到256,因此计数计到256就会产生溢出。这个没有问题,问题是我们现实生活中,经常会有少于256个计数值的要求,如包装线上,一打为12瓶,一瓶药片为100粒,怎么样来满足这个要求呢?提示:如果是一个空的盆要1万滴水滴进去才会满,我在开始滴水之前就先放入一勺水,还需要10000滴嘛?对了,我们采用预置数的方法,我要计100,那我就先放进156,再来100个脉冲,不就到了256了吗。定时也是如此,每个脉冲是1微秒,则计满256个脉冲需时256微秒,但现在我只要100微秒就可以了,怎么办?只要在计数器里面放进156就可以了。在使用单片机的定时器时,我们称为预置初值的方法. 需要提醒读者注意的是,每个计数值所代表的时间是晶振分频所对就的时间,不同晶振所对应的定时器计数值是不同的。 SOSONiX TECHNOLOGY CO., LTD.
Preliminary V0.1 NiX松翰科技股份有限公司 SONiX TECHNOLOGY CO., LTD
六、 自动重装预置数上一节我们提到过任意计数及任意定时的问题,比如我要计100个数,可是8位的计数器要计到256才满,怎么办呢?我们讨论后得出的办法是用预置数,先在计数器里放上156,再来100个脉冲,不就行了吗?是的,但是计满了之后我们又该怎么办呢?要知道,计数总是不断重复的,流水线上计满后马上又要开始下一次计数,下一次的计数还是100吗?当计满并溢出后,计数器里面的值变成了0(为什么,可以参考前面课程的说明),因此下一次将要计满256后才会溢出,这可不符合要求,怎么办?当然办法很简单,就是每次一溢出时执行一段程序(这通常是需要的,要不然要溢出干吗?)可以在这段程序中做把预置数156送入计数器中的事情。所以采用T0要在溢出后做一个重置预置数的工作,做工作当然就得要时间,一般来说这点时间不算什么,可是有一些场合我们还是要计较的,所以就有了第三种工作方式TC0或TC1;自动再装入预置数的工作方式。既然要自动得新装入预置数,那么预置数就得放在一个地方,要不然装什么呢?那么预置数放在什么地方呢?它放在TC0R或TC1R中,,每当计数溢出,就会将计预置数进入TC0C或TC1C中。这是由硬件自动完成的,不需要由人工干预。
定时器/计数器功能一.计数功能SONIX系列MCU的P0.0和P0.1两个引脚,分别作为计数器的计数脉冲输入端。外部输入的脉冲在负跳变有效,进行计数器加1。计数方式下,单片机在每个机器周期对外部计数脉冲进行采样。如果前一个机器周期采用为高电平,后一个机器周期采样为低电平,即为一个有效的计数脉冲,在下一个机器周期进行计数。可见采样计数脉冲是在2个机器周期同时进行的。因此计数脉冲不能高于指令周期的1/2。例如指令周期FCPU=1M,则计数脉冲低于1/2M。二、.定时功能用作定时时,其功能是对指令周期进行计数。因为每个指令周期有固定的时间,每一个指令周期,都是计数器加1,直到计数器计满为止。计数器计满时,再来一个指令周期信号,就使计数器全部回0,这就是溢出。由开始计时到溢出,这段时间就为“定时”时间。在指令周期一定的情况下,定时时间同计数器预先装入的初始值有关。初始值越大,计数时间越短,初始值越小,计数时间越长。SONIX 2XXX系列单片机各款产品内都配备的定时/计数器,并且配备的数量也不相同。可以通过下表来大致了解SONIX2XXX系列单片机的配置情况。
SN8P2501A SN8P2604 SN8P2704ASN8P2711
SN8P2602A SN8P26042 SN8P2705ASN8P2714
SN8P2612 SN8P2606 SN8P2706ASN8P27142
SN8P2612 SN8P2608 SN8P2707ASN8P27143
SN8P2308 SN8P2708ASN8P2715
√ √ 定时/计数器TC0
√ √ √ 定时/计数器TC1表2-1
SONIX 2XXX系列单片机定时/计数器配置一览表
从上表格中可以看出,SONIX 2XXX系列单片机定时/计数器大分致为两大类。一类为基本定时器T0,另一类为多功能定时器TC0/TC1。它们不仅电路结构上不同,而且设计的初衷也各有所异,具体分析如下:一、共同点:1、 都是8位二进制加一可编程定定时器。2、 都带有8级预分频功能。3、 都具有预置开始常数功能。
二、不同点:1、 T0只能做定时器,而TC0/TC1不仅可以做定时器,而且可以做外部脉冲计数器(从P0.0或P0.1引脚输入的脉冲)。2、 T0具有从绿色模式的唤醒功能而TC0/TC1不具有。3、 TC0/TC1具有周期性方波信号TC0OUT/TC1OUT从P5.3和P5.4引脚输出(可驱动BUZZER)。4、 TC0/TC1具有脉宽调制PWM从P5.3和P5.4引脚输出。5、 TC0/TC1具有初始值自动装载功能。 SOSONiX TECHNOLOGY CO., LTD.
Preliminary V0.1 NiX2.1.2 SONIX定时/计数器的特点松翰科技股份有限公司 SONiX TECHNOLOGY CO., LTD本章只会从最基本的功能介绍,关于特殊功能(TC0OUT/TC1OUT和PWM)详见后续章节。SN8P2708A带有比较强功能的定时计数器:1.定时器Timer0:带有8位可预分频的8位递增定时器,在休眠期间经外部晶振/时钟可以工作。2.定时器Timer/Counter0/1:带有8位可预分频的8位递增定时/计数器,具有PWM,BUZZER功能SOSONiX TECHNOLOGY CO., LTD.
Preliminary V0.1 NiX
松翰科技股份有限公司SONiX TECHNOLOGY CO., LTD
§2.2基本结构及相关寄存器2.2.1 基本定时器T0基本定时器T0是一个8位二进制加一计数器。通过设置T0M的T0RATE0~T0RATE2,定时器T0提供了8种可选择的时钟源频率(从Fcpu/2到Fcpu/256)。只要T0ENB置“1”就开启定时器。T0C是加1计数器,当T0C计数到“0FFH”后,若再加1就会回到“00H”,产生溢出信号,T0中断请求标志FT0IRQ被置为“1”,如果T0中断又同时被使能(T0IEN =1),那么系统将执行T0的中断服务程序。T0没有自动加载功能,T0C溢出后,仍会继续计数,因此要得到精确的时钟,用户应该对T0C重新赋值。Internal data bus一、基本定时器T0特性:. 8位循环累加定时器;. 8位软件可编程预分频器;. 计数溢出中断从FFH~00H(本章节只讲T0定时,中断在下章再讲)二、与基本定时器T0相关的寄存器与T0模块定时有关的特殊功能寄存器共有4个,如表2-1所示,T0工作模式寄存器T0M,T0累加计数寄存器T0C,以及和中断有关的INTRQ和INTEN。表 2-2地址0D8H0D9H0C8H0C9H 名称 T0M T0C INTRQ INTEN 上电复位值 T0rate1T0rate0- - - - 00B T0递增计数寄存器 SIOIRQP02IRQSIOIENP02IEN1.T0M中的各位含义如下:T0ENB:T0计数器控制位,由软件置位和清零。当设为1时,允许T0C累加,否则禁止累加。T0rate2~T0rate0:分频器分频比选择位。如表2-2所列。表2-3T0rate2~T0rate0 分频比
2.T0C:T0累加计数寄存器,上电初始值为00H,可以软件重置,每次溢出之后,初始值需要用户重置。初始值设定方法如下:T0C初始值
256 C (T0溢出间隔时间 × 输入时钟)例如:用T0做一个10ms的定时,Fcpu=1M。T0rate选择010(Fcpu/64),那么T0C初始值
= 256 C (T0溢出间隔时间 × 输入时钟)= 256 C ( 10ms × 1M/64 )= 64H
T0M中的Bit6:Bit4决定分频数的比率,如图2-1所示,T0的时钟源来自CPU,通过T0M中的Bit6,Bit5,Bit4来控制分频数的比率,T0ENB位控制计数器时钟,如果为1则时钟输入到T0计数器T0C中,T0开始计数,否则T0C的时钟被切断,T0C停止计数。当T0C计数器从0FFH增加到000H时,系统会将标志位T0IRQ置为1。 SOSONiX TECHNOLOGY CO., LTD.
Preliminary V0.1 Ni
图2-1 基本定时器T0框图
fcpuT0 Time out
松翰科技股份有限公司SONiX TECHNOLOGY CO., LTD
2.2.2 定时/计数器TC0TC0是一个8位二进制定时/计数器,用作通用定时器、buzzer和PWM输出,具有自动重新装载功能,主要由两部分组成:8位自动装载寄存器TC0R,用于保存计数参考值;8位自动加1的计数器TC0C。P5.4P0.0一、定时/计数器TC0特性:
.8位循环累加定时器;
.8位外部事件计数器
.8位软件可编程预分频器;
.计数溢出中断从FFH~00H(本章节只讲TC0定时/计数,中断在下章再讲)
.PWM/Buzzer(本章节不讲述这些内容,请参考相关章节) 二、与定时/计数器TC0相关的寄存器与TC0模块定时有关的特殊功能寄存器共有5个,如表2-3所示,TC0工作模式寄存器TC0M,TC0累加计数寄存器TC0C,TC0计数初值重置寄存器TC0R,以及和中断有关的INTRQ和INTEN。表 2-4地址 0DAH 0DBH 0C8H 0C9H 0CDH名称 TC0M TC0C INTRQ INTEN TC0R上电复位值TC0rate0TC0CKSALOADBBTC0递增计数寄存器SIOIRQP02IRQP01IRQ SIOIENP02IENBBSO
1.TC0M中的各位含义如下:TC0ENB:TC0计数器控制位,由软件置位和清零。当设为1时,允许TC0C累加,否则禁止累加。 TC0rate2~TC0rate0:分频器分频比选择位。如表2-4所列。 TC0CKS:TC0C时钟源选择位(定时/计数功能选择位),0-选择内部时钟,定时功能;1-选择从P00/INT0口输入时钟,计数功能。ALOAD0:0-不允许TC0计数初值自动重置,1-允许TC0计数初值重置。TC0OUT:P5.4口功能选择位,仅在PWM功能允许的情况下有效。1-允许,0-不允许。 PWM0OUT:0-PWM/BUZZER功能控制位,0-禁止PWM/BUZZER功能,1-允许。表2-5TC0rate2~TC0rate0 分频比
SONiX TECHNOLOGY CO., LTD.
Preliminary V0.1Ni
CPUM0,CPUM1fCPU图2-2
定时/计数器TC0框图松翰科技股份有限公司 SONiX TECHNOLOGY CO., LTD2.TC0C:TC0累加计数寄存器,上电初始值为00H,可以软件重置,也可以设为自动重置,初始值设定方法如下:TC0C 初始值
256 C (TC0溢出间隔时间 × 输入时钟)例如:用TC0做一个10ms的定时,Fcpu=1M。TC0rate选择010(Fcpu/64),那么TC0C 初始值
= 256 C (TC0溢出间隔时间 × 输入时钟)256 C ( 10ms × 1M/64 )= 64HTC0R:TC0计数初值重置寄存器,用来保存TC0计数初值。如图2-2所示,TC0的时钟源可以通过来自CPU,也可以来自INT0/P0.0口,通过TC0CKS控制,当来自CPU时是定时功能,当来自INT0/P0.0时为计数功能。当作为定时功能时,TC0M中的Bit6:Bit4决定分频数的比率,TC0ENB位控制计数器时钟,如果为1则时钟输入到TC0计数器TC0C中,TC0开始计数,否则TC0C的时钟被切断,TC0C停止计数。当TC0C计数器从0FFH增加到000H时,系统会将标志位TC0IRQ置为1。
=SOSONiX TECHNOLOGY CO., LTD.
Preliminary V0.1 NiX松翰科技股份有限公司SONiX TECHNOLOGY CO., LTD
2.2.3 定时/计数器TC1TC1是一个8位二进制定时/计数器,用作通用定时器、buzzer和PWM输出,具有自动重新装载功能,主要由两部分组成:8位自动装载寄存器TC1R,用于保存计数参考值;8位自动加1的计数器TC1C。P5.3INT1一、定时/计数器TC1特性:
.8位循环累加定时器;
.8位外部事件计数器.8位软件可编程预分频器;
.计数溢出中断从FFH~00H(本章节只讲TC0定时/计数,中断在下章再讲)
.PWM/Buzzer(本章节不讲述这些内容,请参考相关章节) 二、与定时/计数器TC1有关的特殊功能寄存器与TC1模块定时有关的特殊功能寄存器共有5个,如表2-5所示,TC1工作模式寄存器TC1M,TC1累加计数寄存器TC1C,TC1计数初值重置寄存器TC1R,以及和中断有关的INTRQ和INTEN。表 2-7地址 0DCH 0DDH 0C8H 0C9H 0DEH名称 TC0M TC0C INTRQ INTEN TC0R上电复位值TC0rate0TC0CKSALOADBBTC0递增计数寄存器SIOIRQP02IRQP01IRQ 0000BSIOIENP02IENB0000BS
1.TC1M中的各位含义如下:TC1ENB:TC1计数器控制位,由软件置位和清零。当设为1时,允许TC1C累加,否则禁止累加。 TC1rate2~TC1rate0:分频器分频比选择位。如表2-6所列。 TC1CKS:TC1C时钟源选择位(定时/计数功能选择位),1-选择内部时钟,定时功能;1-选择从P01/INT1口输入时钟,计数功能。ALOAD1:0-不允许TC0计数初值自动重置,1-允许TC0计数初值重置。TC1OUT:P5.3口功能选择位,仅在PWM功能允许的情况下有效。1-允许,0-不允许。 PWM1OUT:0-PWM/BUZZER功能控制位,0-禁止PWM/BUZZER功能,1-允许。表2-8SONiX TECHNOLOGY CO., LTD.
Preliminary V0.1Ni
图2-3 TC1功能结构方框图
TC1rate2~TC1rate0 分频比松翰科技股份有限公司 SONiX TECHNOLOGY CO., LTD
2.TC1C:TC1累加计数寄存器,上电初始值为00H,可以软件重置,也可以设为自动重置,初始值设定方法如下:TC1C 初始值
256 C (TC1溢出间隔时间 × 输入时钟)例如:用TC1做一个10ms的定时,Fcpu=1M。TC1rate选择010(Fcpu/64),那么TC1C 初始值
= 256 C (TC1溢出间隔时间 × 输入时钟)= 256 C ( 10ms × 1M/64 )= 64H3.TC1R:TC1计数初值重置寄存器,用来保存TC1计数初值。如图2-3所示,TC1的时钟源可以通过来自CPU,也可以来自INT1/P0.1口,通过TC1CKS控制,当来自CPU时是定时功能,当来自INT1/P0.1时为计数功能。当作为定时功能时,TC1M中的Bit6:Bit4决定分频数的比率,TC1ENB位控制计数器时钟,如果为1则时钟输入到TC1计数器TC1C中,TC1开始计数,否则TC1C的时钟被切断,TC1C停止计数。当TC1C计数器从0FFH增加到000H时,系统会将标志位TC1IRQ置为1。 SOSONiX TECHNOLOGY CO., LTD.
Preliminary V0.1 NiX松翰科技股份有限公司 SONiX TECHNOLOGY CO., LTD§2.3 定时/计数器编程实例2.3.1
怎样使用定时计数器来定时一. 使用T0来定时;使用T0作为定时器主要分两个部分,第一部分是初始化,第二部分计时溢出的处理。可以按照以下步骤来设定:1、 初始化部分1)、根据需要计算预分频及计数初值,即初始化T0M和T0C,T0C初始值根据以下公式来计算T0C初始值
256 C (T0溢出间隔时间 × 输入时钟)2)、清除IRQ,根据需要使能中断3)、开启定时器2、 计时溢出部分当T0C值从0FFH增加到00H时,T0IRQ将被置1,如果有使能中断,MCU将会调到中断向量处,执行中断程序。不管是在中断中处理,还是采用查询的方式,都可以按照以下步骤来处理。1)、重置T0C初值2)、清除T0IRQ标志位3)、用户处理程序4)、退出返回二. 使用TC0/TC1来定时;步骤基本上和T0一样,包括初始化部分和计时溢出处理部分,但是因为TC0/TC1的资源不一样,所以初始化资源时不一样。1. 初始化部分1)、根据需要计算预分频及计数初值,即初始化TC0/1M和TC0/1C,TC0/1C初始值根据以下公式来计算。TC0/1C初始值
256 C (TC0/1溢出间隔时间 × 输入时钟)2)、根据需要对TC0/1赋值,和TC0/1送一样的值就可以了。3)、将定时器设为定时器模式。4)、清除IRQ,根据需要使能中断。5)、根据需要设置自动重置标志位faload0/1。6)、开启定时器。2. 计时溢出部分当T0C值从0FFH增加到00H时,T0IRQ将被置1,如果有使能中断,MCU将会调到中断向量处,执行中断程序。不管是在中断中处理,还是采用查询的方式,都可以按照以下步骤来处理。1)、清除IRQ标志位。2)、用户处理程序。3)、退出返回。
SO2.3.2 怎样使用TC0/TC1来计数使用TC0/1作计数器基本步骤和用作定时器一样,只是在初始化时选择不同的时钟,即设为计数器模式,定时器的时钟来自Fcpu,而计数器则来自IO端口,具体步骤请参考上一小节。另外,在计数模式下,TC0/1rate将失去作用,相应的P00或者P01外中断将也将失效。
SONiX TECHNOLOGY CO., LTD.
Preliminary V0.1 NiX松翰科技股份有限公司SONiX TECHNOLOGY CO., LTD§2.4
定时/计数器的设计技巧
2.4.1 定时/计数器的基本要求1、不管T0C有没有工作,只要当T0C.7由1变为0时,包括用户软件改变,系统硬件会将T0IRQ置为1,所以建议用户在初始化T0C之后,马上清除T0IRQ,以避免误动作。2、不管TC0C有没有工作,只要当TC0C由0FFH变为非0FFH时,包括用户软件改变,系统硬件会将TC0IRQ置为1,所以建议用户在初始化TC0C之后,建议马上清除T0IRQ,以避免误动作。同样,TC1也一样要注意这点。3、TC0C,TC0R,TC1C,TC1R的初值不能人为的被置为0FFH。
2.4.2 定时器设计实例SO
【设计实例】假设外部晶体的频率为4MHz,而4个外部晶体的震荡周期为一个指令周期。如果要产生一个10MS的定时,那么应该怎么设置定时器T0的分频率和初始值? 首先明白以下几个概念: 1、定时器T0的频率:指令周期Fcpu/定时器T0的分频率。
如:指令周期Fcpu=1M,定时器T0的分频率=2 ,则定时器T0的频率为:1M/2=500K。 2、定时器T0的溢出时间为:1/定时器T0的频率*(256―定时器T0的初始值)。
1/定时器T0的频率为:T0C每加1所需要的时间。
定时器T0是一个向上加的8位计数器,如定时器T0的初始值设置为56,则T0C只需要记录256-56次。
如:指令周期Fcpu=1M,定时器T0的分频率=2,初始值=50,定时器T0的溢出时间为400US。 3、 如果需要的时间比定时器T0的溢出时间大的化,可以通过统计定时器T0的溢出的次数,来得到需要设定的时间。 4、 在计算需要的时间的过程,有8种分频率,256种初始值以及溢出的次数等,因此计算一个定时时间的方法有很多种。 5、 在计算的过程中经常用到除法以及晶体选择(如3.58M),而单片机以2进制的数表示,所以会有可能产生误差率的问题。
外部晶体的震荡周期Fosc=4M,而指令周期Fcpu=1M。通过下面的表格你会发现,定时器T0的分频率选不同的分频率会得到不同的误差率。
表2-4 T0分频率 T0C初始值 中断一次时间US 产生10MS需要中断次数 误差率% 111 6 500 20 0 111 156 200 50 0 110 6 110 156 400 25 0 SONiX TECHNOLOGY CO., LTD.
Preliminary V0.1 NiX松翰科技股份有限公司 SONiX TECHNOLOGY CO., LTD§2.5
同步实验-定时一、实验目的1.熟悉SONIX单片机定时系统。2.熟悉定时器及其相关操作。
二、实验内容1. 利用定时器使P4.0产生一个周期为1秒的方波,驱动LED,观察其状态。2.用同一定时器使P4.0,P4.1分别产生周期为1秒和10秒的方波,分别驱动两个LED,观察其状态。三、试验指导下面对本实验内容做具体的分析,实验要求分别产生1秒和10秒的方波,由上面关于定时器的介绍可知,在高速模式下,系统运行在4M的晶振4分频(Fcpu = Fosc/4)的情况下,定时器的最大定时时间可根据公式:TCXC 初始值 = 256 - (TCX 中断间隔时间×输入时钟)即:TCX中断间隔时间 = (256 C TCX初始值)/输入时钟Fcpu为(4M/4),TCX内部时钟速率选择位选择000(fcpu/256),TCX初始值取0时可得最大时间间隔,由上可算得最大的定时时间为:65.536ms。上面计算可知,单凭定时器延时是无法产生周期为一秒(500ms变化一次)的方波的.对于这种情况,业界最常用的就是采用寄存器累加延时法,具体方法是采用定时器产生一个基准时标,并开辟一个寄存器对这个时标进行累加。例如,在应用系统中经常会有一些定时工作的事件,比如在时钟系统中,小时与分钟中间的那个点每0.5s闪一次,这就是一个0.5s事件,此外还有1ms事件,10ms事件,1s事件等等。若每一个事件均用一个定时器来定时,系统将没有足够的定时器,这样做也是不明智的。这种情况一般是用定时器产生一个最小时标,比如1ms,然后在内存中开辟一块空间做时间累加器,例如为10ms事件开辟一个10ms累加器10ms_counter,当1ms到达,10ms_counter将自加1。这样,每次检测10ms_counter的值,当其值为10时表明10ms到,执行10ms事件并清零累加器重新累加,余者类推。
此外,值得一提的是,为了保证系统的实时性,要求进入中断服务程序的时间越短越好,因此,一般情况下,累加的动作并不在中断服务程序中完成,而只是在中断服务程序中置位基准时标到达标志位,如上例中将1ms标志位置1。退出中断后在主程序中检测此标志位,若为1,则累加计数器并清零标志位,等待下一次时标。这样做提高了系统的实时性,但应注意此时主循环圈的最长时间应短于基准时间,不然会出现漏检情况,导致程序出错。
本实验的范例程序采用上述方法,利用定时器产生一个10ms的基准时标,再开辟一个500ms_counter来累加500ms事件,每当500ms来到即使IO口发生一次反向,这样便产生了一个周期为1s的方波。产生10s周期方波的方法可以在500ms的基础上累加,也可以上10ms的基础上累加,采用前者的优势每个5s(一次电平变化时间)较后者少做4990次累加动作,程序执行质量较高,而后者的好处则在于程序的移值性较好,因为不是每个系统都有500ms的事件的。SOSONiX TECHNOLOGY CO., LTD.
Preliminary V0.1 NiX
松翰科技股份有限公司SONiX TECHNOLOGY CO., LTD
程序流程图如下:松翰科技股份有限公司 SONiX TECHNOLOGY CO., LTD§2.6
本章小结定时/计数器是MCU的最基本,也是最重要的资源设备,应用非常灵活,非常广泛。除了基本的产生定时标志之外,还可以用来做数据通讯如IR,RF,UART等,语音tune等,系统时间片轮调度等等。所以掌握定时器的应用是非常重要的。
SOSONiX TECHNOLOGY CO., LTD.
Preliminary V0.1 NiX松翰科技股份有限公司 SONiX TECHNOLOGY CO., LTD第3章 中断的使用§3.1 概 述中断(Interrupt)是计算机理论和计算机技术中很重要的概念,是提高计算机工作效率的一项重要功能,使计算机具有更强的实时相应能力,能对外界异步发生的事件做出及时处理。所以所有的微处理器(CPU或MPU)和微控制器(M

我要回帖

更多关于 松翰单片机 的文章

 

随机推荐