C语言编写STC12C5A60S2芯片用4个按键控制四个灯的亮灭

C语言编写STC12C5A60S2芯片用4个按键控制四个灯的亮灭C语言编写STC12C5A60S2芯片用4个按键p1.0,p1.1,p1.4,p1.5,p1.6控制四个灯p2.7,p2.6,p2.5,p2.4,p2.3的亮灭,程序代码怎么写,在keil里面。

#include“reg52.h”
#include“delay.h”
// 定义按键 KEY_0~KEY_6  对应P1^0~P1^6
sbit KEY_0 = P1^0;
sbit KEY_1 = P1^1;
sbit KEY_4 = P1^4;
sbit KEY_5 = P1^5;
sbit KEY_6 = P1^6;
// 定义LED _7~LED_3 对应P2^7~P2^3
sbit LED_7 = P2^7;
sbit LED_ 6= P2^6;
sbit LED_ 5= P2^5;
sbit LED_ 4= P2^4;
sbit LED_ 3= P2^3;
void main ( ) {
while(1){
if (!KEY_0 ) {      //  按键KEY_0被按
delayus(20);   //消抖动
    if (!KEY_0 ) {       //确认被按下
       LED_7=~LED_7       //灯亮或灭
}
}
}
...... 其余一样即可。

追问

不用主函数吗

追答

void main ( ){ } 就是主函数啊。

追问

不好意思刚没仔细看,等等我编好能运行,马上采纳

显示端口没有被定义

温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-09-06
STC12C5A60S2系列单片机是宏晶科技生产的单时钟/机器周期(1T)的单片机。它是高速/低功耗/超强抗干扰的新一代8051单片机,指令代码完全兼容传统8051,但速度快8-12倍。内部集成MAX810专用复位电路,2路PWM,8路高速10位A/D转换(250K/S),针对电机控制,强干扰场合。
STC12C5A60S2供应商:拍明芯城
特点
STC12C5A60S2/AD/PWM系列单片机是宏晶科技生产的单时钟/机器周期(1T)的单片机,是高速/低功耗/超强抗干扰的新一代8051单片机,指令代码完全兼容传统8051,但速度快8-12倍。内部集成MAX810专用复位电路,2路PWM,8路高速10位A/D转换(250K/S),针对电机控制,强干扰场合。
1.增强型8051 CPU,1T,单时钟/机器周期,指令代码完全兼容传统8051;
2.工作电压:STC12C5A60S2系列工作电压:5.5V-3.3V(5V单片机)STC12LE5A60S2系列工作电压:3.6V-2.2V(3V单片机);
3.工作频率范围:0 - 35MHz,相当于普通8051的 0~420MHz;
4.用户应用程序空间8K /16K / 20K / 32K / 40K / 48K / 52K / 60K / 62K字节;
5.片上集成1280字节RAM;
6.通用I/O口(36/40/44个),复位后为:准双向口/弱上拉(普通8051传统I/O口),可设置成四种模式:准双向口/弱上拉,推挽/强上拉,仅为输入/高阻,开漏,每个I/O口驱动能力均可达到20mA,但整个芯片最大不要超过120mA;
7. ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器,无需专用仿真器 可通过串口(P3.0/P3.1)直接下载用户程序,数秒即可完成一片;
8.有EEPROM功能(STC12C5A62S2/AD/PWM无内部EEPROM);
9.内部集成MAX810专用复位电路(外部晶体12M以下时,复位脚可直接1K电阻到地);
10.外部掉电检测电路:在P4.6口有一个低压门槛比较器,5V单片机为1.32V,误差为±5%,3.3V单片机为1.30V,误差为±3%;
11.时钟源:外部高精度晶体/时钟,内部R/C振荡器(温漂为±5%到±10%以内) 1用户在下载用户程序时,可选择是使用内部R/C振荡器还是外部晶体/时钟,常温下内部R/C振荡器频率为:5.0V单片机为:11MHz~15.5MHz,3.3V单片机为:8MHz~12MHz,精度要求不高时,可选择使用内部时钟,但因为有制造误差和温漂,以实际测试为准;
12.共4个16位定时器 两个与传统8051兼容的定时器/计数器,16位定时器T0和T1,没有定时器2,但有独立波特率发生器 做串行通讯的波特率发生器 再加上2路PCA模块可再实现2个16位定时器;
13. 2个时钟输出口,可由T0的溢出在P3.4/T0输出时钟,可由T1的溢出在P3.5/T1输出时钟;
14.外部中断I/O口7路,传统的下降沿中断或低电平触发中断,并新增支持上升沿中断的PCA模块, Power Down模式可由外部中断唤醒,INT0/P3.2,INT1/P3.3,T0/P3.4, T1/P3.5, RxD/P3.0,CCP0/P1.3(也可通过寄存器设置到P4.2 ), CCP1/P1.4 (也可通过寄存器设置到P4.3);
15. PWM(2路)/PCA(可编程计数器阵列,2路):
——也可用来当2路D/A使用
——也可用来再实现2个定时器
——也可用来再实现2个外部中断(上升沿中断/下降沿中断均可分别或同时支持);
16.A/D转换, 10位精度ADC,共8路,转换速度可达250K/S(每秒钟25万次),通用全双工异步串行口(UART),由于STC12系列是高速的8051,可再用定时器或PCA软件实现多串口;
17. STC12C5A60S2系列有双串口,后缀有S2标志的才有双串口,RxD2/P1.2(可通过寄存器设置到P4.2),TxD2/P1.3(可通过寄存器设置到P4.3);
18.工作温度范围:-40 - +85℃(工业级) / 0 - 75℃(商业级)21.封装:PDIP-40,LQFP-44,LQFP-48 I/O口不够时,可用2到3根普通I/O口线外接 74HC164/165/595(均可级联)来扩展I/O口, 还可用A/D做按键扫描来节省I/O口,或用双CPU,三线通信,还多了串口。
STC12C5A60S2是8051系列单片机,与普通51单片机相比有以下特点:
1、同样晶振的情况下,速度是普通51的8~12倍
2、有8路10位AD
3、多了两个定时器,带PWM功能
4、有SPI接口
5、有EEPROM
6、有1K内部扩展RAM
7、有WATCH_DOG
8、多一个串口
9、IO口可以定义,有四种状态
10、中断优先级有四种状态可定义
引脚功能编辑
VCC:供电电压;
GND:接地;
P0口:P0口为一个8位漏级开路双向I/O口,每个管脚可吸收8TTL门电流。当P0口的管脚写“1”时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FLASH编程时,P0口作为原码输入口,当FLASH进行校验时,P0输出原码,此时P0外部电位必须被拉高;
P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入“1”后,电位被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收;
P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚电位被内部上拉电阻拉高,且作为输入。作为输入时,P2口的管脚电位被外部拉低,将输出电流,这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉的优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号;
P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入时,由于外部下拉为低电平,P3口将输出电流(ILL),也是由于上拉的缘故。P3口也可作为AT89C51的一些特殊功能口:
P3.0 RXD(串行输入口)
P3.1 TXD(串行输出口)
P3.2 INT0(外部中断0)
P3.3 INT1(外部中断1)
P3.4 T0(记时器0外部输入)
P3.5 T1(记时器1外部输入)
P3.6 WR (外部数据存储器写选通)
P3.7 RD (外部数据存储器读选通)
同时P3口同时为闪烁编程和编程校验接收一些控制信号;
RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高平时间;
ALE / PROG :当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的低位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令时ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效;
PSEN:外部程序存储器的选通信号。在由外部程序存储器取址期间,每个机器周期PSEN两次有效。但在访问内部部数据存储器时,这两次有效的PSEN信号将不出现;
EA/VPP:当EA保持低电平时,访问外部ROM;注意加密方式1时,EA将内部锁定为RESET;当EA端保持高电平时,访问内部ROM。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP);
XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入;
XTAL2:来自反向振荡器的输出;