晚上随手写,也未调试,权当看看
程序有不严谨地方还得调试修改
#include <REGX51.H>
#define STATUS_1S 1
#define STATUS_2S 2
#define STATUS_3S 3
#define STATUS_4S 4
#define STATUS_5S 5
#define STATUS_15S 15
#define STATUS_28S 28
#define STATUS_29S 29
#define STATUS_30S 30
unsigned char flag,status,status_temp=1,status_temp_
sbit K1 = P0^0
sbit K2 = P0^1
sbit RLED = P0^2
sbit YLED = P0^3
sbit GLED = P0^4
void Init(void)
{
ET0=1
TR0=1
RLED=0 //亮
YLED=0
GLED=0
while(status_temp)
{
switch (status)
{
case STATUS_1S: //1S
{
RLED=1 //灭,闪一次
YLED=1
GLED=1
} break
case STATUS_2S: //1S
{
RLED=0 //亮,闪一次
YLED=0
GLED=0
} break
case STATUS_3S: //1S
{
RLED=1 //灭
YLED=1
GLED=1
status_temp=0
} break
}
}
status_temp=1
ET0=0
TR0=0
}
void Init_Timer0(void)
{
TMOD=0x01
// ET0=1
// TR0=1
EA=1
TH0=0X3C
TL0=0XB0 // 未计算,偷楼上的
}
void M_Start(void)
{
TH0=0X3C
TL0=0XB0
ET0=1
TR0=1
RLED=0 //红亮
while(status_temp)
{
switch (status)
{
case STATUS_1S:
{
if(status_temp_==1)
{
YLED=0
}
} break
case STATUS_2S:
{
if(status_temp_==1)
{
YLED=1
}
} break
case STATUS_3S:
{
if(status_temp_==1)
{
YLED=0
status_temp_=0
}
} break
case STATUS_15S: //15S灭,绿亮
{
RLED=1
GLED=0
} break
case STATUS_28S:
{
GLED=1
} break
case STATUS_29S:
{
GLED=0
} break
case STATUS_30S:
{
GLED=1
status=0
status_temp_=1
} break
}
}
ET0=0
TR0=0
status=0
status_temp=1
YLED=1
}
void M_End(void)
{
TH0=0X3C
TL0=0XB0
ET0=1
TR0=1
RLED=0 //亮 1次
YLED=0
GLED=0
while(status_temp)
{
switch (status)
{
case STATUS_1S: //1S
{
RLED=1 //灭一次
YLED=1
GLED=1
} break
case STATUS_2S: //1S
{
RLED=0 //亮二次
YLED=0
GLED=0
} break
case STATUS_3S: //1S
{
RLED=1 ////灭二次
YLED=1
GLED=1
} break
case STATUS_4S: //1S
{
RLED=0 ////亮三次
YLED=0
GLED=0
} break
case STATUS_5S: //1S
{
RLED=1 ////灭三次
YLED=1
GLED=1
status_temp=0
} break
}
}
status_temp=1
ET0=0
TR0=0
}
main()
{
Init()//单片机初始化
Init_Timer0()//定时器初始化
while(1)
{
if(K1==0)
M_Start()//模拟开始
if(K2==0)
M_End()//模拟结束
}
}
void interrupt_time0() interrupt 1 //核对头文件,一致就好
{
TH0=0X3C
TL0=0XB0
flag++
if(flag==20)
{
status++
flag=0
}
}
一. 填空题1. MCS-51单片机是____8____位机,其最大程序容量可达___64_____K字节,有_____4___个并行口和____32____条I/O管脚。
2. MCS-51单片机正常工作所必须的外部硬件电路是___电源_____、___时钟_____、__复位______。
3. MCS-51单片机复位电平是___高_____电平,正常工作时复位端为__低______电平,复位后并所有行口的输出为____高____电平。
4. MCS-51单片机内部结构中,四个基本功能单元分别是___CPU_____、__RAM______、____ROM____、___定时器计数器I/O口_____;三个扩展功能单元分别是____?____、___?____、___?_____。
5. MCS-51单片机内部RAM四个分区分别是__00H到1FH(R0-R7)可位寻址____、____ _ 20H-2FH___、_30H-7FH__ _____、__80H-FFH______。
6. MCS-51单片机___P0_____口没有内部上拉电阻;并行口作为输入口使用时必须保证该端口场效应管__开漏______,即向该端口写___0xff_____,此时该端口的输出锁存器Q端为___1(高电平)_____。
7. MCS-51单片机计数器工作在方式1和方式2的最大计数值分别是_____65536______、___256________。
8. MCS-51单片机若单片机的主时钟振荡频率为6MHz,定时器工作在方式1和方式2的最大定时时间分别是_____自己算!!______ms、___不懂看书!!________us。基本指令周期是___0.5-2_______us。
9. MCS-51单片机的五个中断源分别是___INT0______、__T0_______、_____INT1_____、___T1______、___UART_______。
10. 编写程序常用的三种程序结构是 __顺序结构_______、__循环结构_______、___选择结构_______。
11. C语言语法中,数据类型unsigned char 定义的是____8_____位无符号数;数据类型unsigned int定义的是___16______位无符号数。对8位和16位有符号数,定义数据类型关键词为___signed char______、____short_____。
12. 单片机上电后是从主函数void main()的___0x0000H______位置运行。
13. 单片机C语言编程时必须有的固定结构的语句是#include <reg51.h>、void main()以及____while_____。
14. keil 集成开发软件的三个主要功能是___编译______、__调试_______、___仿真______。
15. 十进制数100对应的十六进制数是____64_____、二进制数是___01100100______。
二. 读程序题
默认有关变量x、y、z、a、b、c、i均为unsigned int (8为无符号数)(这个是不是打错了)请写出局部程序运行后的结果,用十进制表示。
1. x = ___6___, y = ___3___, z = __11____ , a = ___5___, b = ___15___, c = ___252___。
x = 50/8 y = 100%12 z = 240+26
a = z>>1 b = x | z c = ~y
2. x = _183_____, y = __10____, z = __11____ , a = __10____, b = __10____, c = ___10___。
x = 0xa5 ^ 0x12 y = 5*2 z = y++
a = --z b = a &y c = (a+z)/2
3. x = ___6___, y = __12____, i = ___3___。
x=0y=0
for (i=1i<=3i++){
x = x+i
y = y + i*2
}
4. x = __20____, y = ___10___, z = ___81___ , a = __8____, b = ____9__,
c = __48____, i = ___8___。
a=0
if (!a){
x=20y=x<<2z=y++
}else{
x=10y=x<<2z=y++
}
i=2<<2y=10
if (i>3 &&y){
a=y &0x0c
b=++i
c=x^y
}
随便做的,有些东东忘了!不懂的自己回去看看书去。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)