STC15F2K60S2单片机

news/2024/10/19 18:25:49/

     iap15f2k60s2是我们蓝桥杯8051d单片机开发板上的芯片,但是我们在keil4仿真软件里所引用的头文件是stc15f2k60s2。因为在单片机中,IAP和STC是同一系列产品。IAP和STC的最大区别在于:IAP可以将用户程序中的FLASH当做EEPROM使用,虽然STC不可以当做EEPROM,但是它有独立的EEPROM可以使用(EEPROM是指带电可擦可编程只读存储器。是一种掉电后数据不丢失的存储芯片。 EEPROM 可以在电脑上或专用设备上擦除已有信息,重新编程)

   蓝桥杯开发版内部结构

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5LiA5Y-q5pGG54OC5bS9,size_20,color_FFFFFF,t_70,g_se,x_16

   内部资源

  1. 中央处理器(CPU)
  2. 程序存储器(Flash)
  3. 数据存储器(RAM)
  4. 数据Flash存储器
  5. 定时器/计数器
  6. I/O口
  7. 串口通信接口(UART)
  8. 中断系统
  9. SPI接口
  10. 高速A/D转换模块
  11. PWM
  12. 看门狗
  13. 电源监控
  14. 片内RC振荡器  

我们现阶段所学的主要内容就是定时器和中断系统的使用那么什么是中断系统

中断系统是为了让CPU具有对外界紧急事件的实时处理能力而设置的。当CPU正在处理某件事时,外界来了一个紧急请求,需要CPU停下当前进程,去处理紧急请求,处理玩紧急请求之后,再返回原进程继续工作。同时在中断之中还有一个重要的东西就是中断的优先级,CPU每次处理事件都是通过优先级来进行。每一个高级别的中断都可以打断低级别的程序进程。

void  InterruptTimer0() interrupt 1//选择定时器0
{
TH0 = 0xfc;
TL0 = 0x67;//定义定时器初值
cnt++;//定义一个变量索引,此时cnt是一个计数器,用于记录中断次数
if(cnt >=1000)//
{
cnt = 0;
flag = 1;
}

上述代码就是一个简单的中断服务代码,通过设置一个周期,通过中断次数来判断是否达到一个周期,从而实现数码管的动态显示。

下面一段是实现数码管计时同时只显示有效位数的代码

#include <STC15F2K60S2.H>
unsigned char code LEDchar[] ={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};//定义数码管数值
unsigned char LEDBuff[6] = {0xff,0xff,0xff,0xff,0xff,0xff};//为数码管添加一个缓冲区
unsigned int cnt = 0;
unsigned char flag = 0;
unsigned char i = 0;
unsigned char digits = 1; // 定义有效位数void main()
{
unsigned long sec = 0;
EA = 1;//使能总中断
TMOD = 0x01;//决定定时器工作模式1
TH0 = 0xfc;
TL0 = 0x67;//为定时器赋初值
ET0 = 1;//使定时器0中断
TR0 = 1;//启用定时器0
while(1)
{
if(flag == 1)
{
flag = 0;
sec++;
// 判断有效位数
if(sec >= 10) digits = 2;
if(sec >= 100) digits = 3;
if(sec >= 1000) digits = 4;// 根据有效位数控制LED显示if(digits == 1) {LEDBuff[0] = LEDchar[sec%10];LEDBuff[1] = 0xff;LEDBuff[2] = 0xff;LEDBuff[3] = 0xff;}if(digits == 2) {LEDBuff[0] = LEDchar[sec%10];LEDBuff[1] = LEDchar[sec/10%10];LEDBuff[2] = 0xff;LEDBuff[3] = 0xff;}if(digits == 3) {LEDBuff[0] = LEDchar[sec%10];LEDBuff[1] = LEDchar[sec/10%10];LEDBuff[2] = LEDchar[sec/100%10];LEDBuff[3] = 0xff;}if(digits == 4) {LEDBuff[0] = LEDchar[sec%10];LEDBuff[1] = LEDchar[sec/10%10];LEDBuff[2] = LEDchar[sec/100%10];LEDBuff[3] = LEDchar[sec/1000%10];}}
}}void  InterruptTimer0() interrupt 1
{
TH0 = 0xfc;
TL0 = 0x67;
cnt++;
if(cnt >=1000)
{
cnt = 0;
flag = 1;
}P2 = 0xe0;
P0 = 0xff;
P2 = 0;switch(i)
{case 0:P2 = 0xc0;P0 = 0x08;P2 = 0;P2 = 0xe0;P0 = LEDBuff[0];P2=0;i++;break;case 1:P2 = 0xc0;P0 = 0x04;P2 = 0;P2 = 0xe0;P0 = LEDBuff[1];P2=0;i++;break;case 2:P2 = 0xc0;P0 = 0x02;P2 = 0;P2=0xe0;P0 = LEDBuff[2];P2=0;i++;break;case 3:P2 = 0xc0;P0 = 0x01;P2 = 0;P2=0xe0;P0 = LEDBuff[3];P2=0;i=0;break;default:break;
}}


http://www.ppmy.cn/news/496352.html

相关文章

KeilC51使用教程

1 点击桌面上的Keil uVision4图标&#xff0c;出现启动画面&#xff1a; 2. 点击“project — New uVision Project”新建一个工程&#xff1a; 3. 给这个工程取个名, 然后保存&#xff0c; 工程的后缀为uvporj。 4.弹出一个框&#xff0c;在CPU类型下我们找到并选中…

对于reg51.h、reg52.h、regx52.h、stc15f2k60s2.h的思考

早在学习51单片机时就在想这几个头文件到底有什么区别&#xff0c;在不同的地方有不同的用法。现在再回过头来看心中不禁了然。 reg52.h和stc15f2k60s2.h对于使用蓝桥杯的板子&#xff0c;都可以正常使用&#xff0c;但是又有一些区别&#xff0c;简单来说&#xff0c;我们单片…

MCS-51单片机 特殊功能寄存器(SFR)

在80C51单片机中设置了与片内RAM统一编址的21个特殊功能寄存器&#xff08;SFR&#xff09;。访问SFR只允许使用直接寻址方式。特殊功能寄存器&#xff08;SFR&#xff09;每一位的定义和作用与单片机各部件直接相关。 1. 与运算器相关的寄存器&#xff08;3个&#xff09; ①累…

keil c51 关键字

一&#xff1a;KeilCx51扩展的关键字&#xff1a; •at •alien •bdata •bit •code •compac •data •far •idata •interrupt •large •pdata •priority •reentrant •sbit •sfr •sfr16 •small •task •using •xdata 二&#xff1a;C51扩展关键字说明 1、_at…

XC5VLX30T-2FF323I Virtex-5 LXT FPGA IC 产品参数

概述 Virtex-5 FPGA有-3&#xff0c;-2&#xff0c;-1速度等级&#xff0c;其中-3具有最高的性能。Virtex-5 FPGA直流和交流特性指定为商业和工业级别。除工作温度范围外&#xff0c;除非另有说明&#xff0c;所有直流和交流电气参数对于特定转速等级是相同的(即-1转速等级的工…

stc15f2k60s2.h

#ifndef __STC15F2K60S2_H_ #define __STC15F2K60S2_H_/ //注意: STC15W4K32S4系列的芯片,上电后所有与PWM相关的IO口均为 // 高阻态,需将这些口设置为准双向口或强推挽模式方可正常使用 //相关IO: P0.6/P0.7/P1.6/P1.7/P2.1/P2.2 // P2.3/P2.7/P3.7/P4.2/P4.4/P4.…

KGE性能指标:MRR,MR,HITS@1,HITS@3,HITS@10

本文将介绍用于衡量知识图谱嵌入&#xff08;Knowledge Graph Embedding&#xff0c;KGE&#xff09;模型性能中最常用的几个指标&#xff1a;MRR&#xff0c;MR&#xff0c;HITS1&#xff0c;HITS3&#xff0c;HITS10。 一、MRR MRR的全称是Mean Reciprocal Ranking&#xff0…

CRC16

CRC选择 当数据帧长度在8bits-128bits范围内时&#xff0c;推荐CRC-8(CRC-8能够减少额外比特的开销&#xff0c;且有更好的性能表现) 当数据帧长度在128bits-2048bits范围内时&#xff0c;推荐CRC-12&#xff0c;CRC-16&#xff0c;CRC-CCITT(CRC-12额外比特的开销更小&#x…