&& : 逻辑与,都为真则真
||: 逻辑或,一个为真则为真
!:逻辑非,
&:按位与
|:按位或
~:按位取反
^:按位异或,相异为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语言基础及流水灯实现
下一篇:中断与数码管动态显示
推荐阅读最新更新时间:2026-03-19 11:46
- 基于 Blackfin 数字信号处理器 (DSP) 的 ADZS-BF518F-EZLITE、ADSP-BF518F EZ-Kit Lite 评估系统
- 使用 ON Semiconductor 的 CAT3200Z 的参考设计
- LTC2162 演示板,16 位 65Msps ADC,LVDS 输出,5-140MHz
- 使用 Analog Devices 的 LTC3526BEDC-2 的参考设计
- LT3091HT7 在极低输出电压下低压降操作的典型应用
- 蓝牙协议分析工具nRF52840 MDK USB Dongle
- NCV2902DR2G 维恩桥振荡器运算放大器的典型应用
- LTC4100EGN 演示板,智能电池充电器 DCIN = 15V-20V / 3.5V
- TC78H620FNG 双桥直流有刷电机驱动器评估板
- 带有 DRP w/Try.SRC 和 Type-C 插座的 PTN5110 USB PD 的典型应用

采用51单片机定时器方式的无抖动的4x4矩阵按键程序
Follow_me第三季第一期代码
现代雷达系统的信号设计
MCP6C02T-050H/Q8B
BFR340T






京公网安备 11010802033920号