⑴ 设单片机系统如何编写一个完整的C51程序使P1.6和P1
设单片机系统编写一个完整的C51程序使P1.6和P1,可以使用正确编码加上解压即可。
⑵ 使用C51编写程序实现如下功能,将40H~4FH共16个RAM单元的信息初始化为30H,要求
char * pRam; /毁李空/定义一个指针
pRam = 0x40; //赋地址给一个指纤瞎针
然扰铅后
for(i=0;i<0x10;i++)
( *(pRam+i) = 0x30;}
就是了
⑶ 单片机C51语言中用switch语句来实现,怎么写这个功能
switch((left<蠢宏带<4)|right)
{
case 0x00:led_left=1;led_right=1;break;
带芦绝迟 case 0x01:led_left=0;led_right=1;break;
case 0x10:led_left=1;led_right=0;break;
case 0x11:led_left=1;led_right=1;break;
}
⑷ 试用C51及汇编语言编程序,实现将50H至5FH共16个RAM单元初始化为“a8”的功能
汇编程序如下:
MOV50H,#0A8H
MOV51H,#0A8H
MOV52H,#0A8H
。。。 。。。共 16 行,你补齐即可。
MOV5FH,#0A8H
END
⑸ 怎么用c语言/C51程序实现单片机按键长按开机与长按关机
1.
首先需要硬件支持,也就是单片机某个引脚可以控制断电和维持上电
2.
按键的的作用也可以给单片机供电,并且还要有个专门的引脚检激咐测按键状态逗铅仿。
3.
软件:首先是长按判断。这个最好用按键扫描。就是检测按键按下时候,定时器计时,如果松开就立即清零。在设置一个功能函数检测定时值,大于两秒后,就表示长按。
4.
按键按下单片机供电开始计时,如果达到长按标准,就输出引脚控制持续供电,这时候按键松了也不会断电。
5.
运行期间,按键再次按下并符合长按,那木引脚输出停止供电,这时候如果按键松开,那就彻底没电关山纤机。
⑹ 试用51单片机C51编写一电脑钟程序,定时器用方式2中断处理实现
第一问比较简单,拓展功能比较繁琐,要考虑闰年的影响,计算复杂一些。
以下是简单的时钟:
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar a=0;//中断次数
uchar sec=0,min=0,hour=0;//时分秒
uchar date=1,mon=1, year=19;//年月日,年只计算后2 位,如2019,只考虑19
uchar tablemon[12]={31,28,31,30,31,30,31,31,30,31,30,31};//每月有多少握腊腊天,2月按28天考虑
void main(void )//主程序
{
TMOD=0x01;// 定时器0工作方式一,方式2一次只能定时256us,中断太频繁 ,不建议段滑使用
ET0=1;
EA=1;
TH0=(65536-50000)/256;//定时50ms
TL0=(65536-50000)%256;
TR0=1;
while(1)
{ dislpay();}//显示子程序,与硬件连接有关
}
//中断局好子程序
void Timer0(void) interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
a++;
if(a==20) {a=0;sec++;}//20次是1秒
if(sec==60) {sec=0;min++;}
if(min==60) {min=0;hour++;}
if(hour==24){hour=0;date++;}
if(date>tablemon[ mon-1]){date=1;mon++;}
if(mon==13){mon=1;year++;}
}
⑺ 单片机,c51汇编语言编写程序
SUBDATA:
CLRC
MOVA,41H
SUBBA,43H
MOVA,40H
SUBBA,42H
JCSUBD1
MOV44H,40H
MOV45H,41H
MOV46H,42H
MOV47H,43H
RET
SUBD1:
MOV44H,42H
MOV45H,43H
MOV46H,40H
MOV47H,41H
RET
⑻ C51单片机怎么用C语言实现数值的开方和平方运算
C51是基于标准的C语言扩展而来的,所以,标准C语言能做的东西,C51也可以。
平方运算,自不必说,就是两个数相模岁乘:
例如:float a,b,c; c = a*b;
开方,则需要用到库函数:
标准c语言里用的如码亏是 sqrt()函数,这个函数包含在math.h文件中。
所以:
#include <math.h>
c = sqrt(a);
就渣神可以了
⑼ 用C51语言写一个完整的程序,实现将内部RAM地址40H和50H单元相加,保存到60H存储单元!~
#include<陆森腊悔reg51.h>早局亩
sfr xda=0x40;
sfr yda=0x50;
sfr rel=0x60;
main()
{
rel=xda+yda;
while(1){};
}
⑽ 试用C51语言编写将0-9,A-F转换成相应的ASII码程序,求大神解答,最好能有点注释,谢谢!!
转换ASCII没什么东西ASCII码中0对应值0x301对应0x31依次
直接算就行了所以这个程序写成来是没什么注释写的
//1位16进制值转ASCII
unsignedcharhextoASCII(unsigned型冲chara)
{
if(a<9)
{
returna+0x30;
}
else
{
租租谨弊基returna+0x41;
}
}