&& : 逻辑与,都为真则真
||: 逻辑或,一个为真则为真
!:逻辑非,
&:按位与
|:按位或
~:按位取反
^:按位异或,相异为1.例如A=0b11001100,B=0b11110000,F=A^B=0b00111100
时钟周期:晶振就是时钟源,就是晶振分之一。
机器周期:完成一个操作的最短时间。一个机器周期是12个时钟周期。
定时器:打开定时器后,定时器“存储寄存器”的值经过一个机器周期自动加1,也就是说,机器周期是定时器的计数周期。
定时器存储寄存器 sfr地址 复位值
TH0 定时器 0x8C 0x00
TL0 0x8A
TH1 0x8D
TL1 0x8B
TCON 定时器控制寄存器的位分配
TMOD 定时器模式寄存器的位分配
#include sbit LED=P0^0; sbit ADDR0=P1^0; sbit ADDR1=P1^1; sbit ADDR2=P1^2; sbit ADDR3=P1^3; sbit ENLED=P1^4; void main() { ADDR0=0; ADDR1=1; ADDR2=1; ADDR3=1; ENLED=0; TMOD=0x01; TH0= 0xb8; TL0=0x00; TR0=1; unsigned char cnt=0; while(1) { /* 定时器使用方法 1.设置特殊功能寄存器TMOD,配置好工作模式。 2.设置计数寄存器TH0和TL0的初值。 3.设置TCON,通过TR0置1让定时器开始计数 4.判断TCON寄存器的TF0位,检测定时器溢出情况 */ if(TF0==1) { /* 晶振是11.0592MHz ,时钟周期是1/11.0592 *1000000=90422。 定时20ms=0.02s 机器周期X *12/11.0592=0.02 X=18432; 定时器到65535+1 溢出 T0+X=65536 T0=47104; */ TF0=0; TH0=0xb8; TL0=0x00; cnt++; if(cnt>=50) { cnt=0; LED=~LED; } } } } #includ sbit ADDR0=P1^0; sbit ADDR1=P1^1; sbit ADDR2=P1^2; sbit ADDR3=P1^3; sbit ENLED=P1^4; unsigned char code (放入程序存储空间,节省空间)LED[]={0xC0,数码管真值表。} void main() { unsigned char cnt=0; unsigned char sec=0; ENLED =0; ADDR3=1; ADDR2=0; ADDR1=0; ADDR0=0; TMOD=0x01; TH0=0xB8; TL0=0x00; TR0=1; while(1) { if(TF0==1) { TF0=0; TH0=0xB8; TL0=0x00; cnt++; if(cnt>=50) { cnt=0; P0=LED[sec]; sec++; if(sec>=16) sec=0; } } } }
上一篇:C语言基础及流水灯实现
下一篇:中断与数码管动态显示
推荐阅读最新更新时间:2024-11-12 11:59
设计资源 培训 开发板 精华推荐
- STSPIN32G4 三相无刷电机演示板
- DC814A2-C,使用 LTC6900 1kHz 至 20MHz 固定频率硅振荡器的演示板
- LT3990IMSE 3.3V 同步降压转换器的典型应用
- VAR-DVK-MX6_PRO_CO,基于 VAR-SOM-MX6 的开发套件,带有 7 英寸 LCD 电容式触摸面板和 Windows Embedded Compact 7
- 使用 ADA4077-1ARZ-RL 双电源高精度放大器用于低功耗线性化 RTD 电路的典型应用电路
- 使用 Analog Devices 的 LTC3374AHUHF 的参考设计
- L7806A 光控制器稳压器的典型应用 (Vo(min) = Vxx + VBE)
- 利民AX120R 2011 RGB 扣具
- RSO-053.3S 3.3V、300mA输出DC/DC转换器典型应用电路
- LT8303HS5 6 至 80Vin、5Vout 隔离反激式转换器的典型应用电路