导航:首页 > 操作系统 > ms8单片机

ms8单片机

发布时间:2023-05-28 01:51:54

‘壹’ stm8s单片机编程

文件:main.c
用途:
注意:内部8M晶振
************************************************/

#include <iom128v.h>

unsigned char LED_table[]={0xFF,0x00,0xFF,0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F,0xFF,0x00,0xFF,0x7F,0xBF,0xDF,0xEF,0xF7,0xFB,0xFD,0xFE,0xFF,0x00,0xFF,0x7E,0xBD,0xDB,0xE7,0xFF,0x00,0xE7,0xDB,0xBD,0x7E,0xFF,0x00};

用途:延时函数
注意:系统时钟8M
************************************************/

void delay_1us(void) //1us延时函数
{
asm("nop");
}

void delay_nus(unsigned int n) //N us延时函数
{
unsigned int i=0;
for (i=0;i<n;i++)
delay_1us();
}

void delay_1ms(void) //1ms延时函数
{
unsigned int i;
for (i=0;i<1140;i++);
}

void delay_nms(unsigned int n) //N ms延时函数
{
unsigned int i=0;
for (i=0;i<n;i++)
delay_1ms();
}

void main(void)
{
unsigned char i=0;
PORTA = 0xFF;
DDRA = 0xFF;
DDRE=0XFF;
PORTE=0XFF;
while(1)
{
if(i==36) i=0;
PORTA = LED_table[i++];
delay_nms(80);
}
}

‘贰’ 请问单片机中的delay()的单位时间是什么

单片机中的delay()的单位时间不是系统提供的,而是用户自己编制的。

如果用循环语句实现的循环,没法计算,但是可以通过软件仿真看到具体时间,但是一般精精确延时是没法用循环语句实现的。

如果想精确延时,一般需要用到定时器,延时时间与晶振有关系,单片机系统一般常选用11.059 2 MHz、12 MHz或6 MHz晶振。第一种更容易产生各种标准的波特率,后两种的一个机器周期分别为1 μs和2 μs,便于精确延时。本程序中假设使用频率为12 MHz的晶振。

最长的延时时间可达216=65 536 μs。若定时器工作在方式2,则可实现极短时间的精确延时;如使用其他定时方式,则要考虑重装定时初值的时间(重装定时器初值占用2个机器周期)。

(2)ms8单片机扩展阅读

单片机C语言程序中延时函数delay的原理是:仅仅执行一些,没有实质性影响的所谓“无意义指令”,比如做比大小啊,做某个int的自加运算啊之类的。

单片机的有些程序需要调用延时程序,合理的安排循环次数以及空操作的个数方法:用汇编的话就根据你的当前晶振频率去推算你的指令周期,然后结合需要延迟的时间。

编写延迟程序,用C的话还是要看最后生成的汇编码是什么样的了。最简单的方法就是写好程序以后再编译器里软仿真看时间。

单片机C语言延时需注意的问题:

标准的C语言中没有空语句。但在单片机的C语言编程中,经常需要用几个空指令产生短延时的效果。这在汇编语言中很容易实现,写几个nop就行了。

在keil C51中,直接调用库函数:

#include // 声明了void _nop_(void);

_nop_(); // 产生一条NOP指令

作用:对于延时很短的,要求在us级的,采用“_nop_”函数,这个函数相当汇编NOP指令,延时几微秒。NOP指令为单周期指令,可由晶振频率算出延时时间,对于12M晶振,延时1uS。对于延时比较长的,要求在大于10us,采用C51中的循环语句来实现。

‘叁’ 对于8M单片机,0.5ms约可以执行多少条指令

如果是MCS-51单片机,8M晶册贺振的话,机器周期为1.5us,0.5ms等于50us
1、如果执行单周期指令,那么可以执行33条
2、如果执行双周期指令的话,那么和森可以执行16条。
3、如果执行4周期的话唤姿亩,那么可以执行8条。

‘肆’ 单片机流水灯C语言程序(8个灯,依次点亮每个灯,延时500MS)

单片机流水灯C语言程序的源代码如下:

#include //51系列单片机定义文件

#define uchar unsigned char //定义无符号字符

#define uint unsigned int //定义无符号整数

void delay(uint); //声明延时函数

void main(void)

{

uint i;

uchar temp;

while(1)

{

temp=0x01;

for(i=0;i<8;i++) //8个流水灯逐个闪动

{

P1=~temp;

delay(100); //调用延时函数

temp<<=1;

}

temp=0x80;

for(i=0;i<8;i++) //8个流水灯反向逐个闪动

{

P1=~temp;

delay(100); //调用延时函数

temp>>=1;

}

temp=0xFE;

for(i=0;i<8;i++) //8个流水灯依次全部点亮

{

P1=temp;

delay(100); //调用延时函数

temp<<=1;

}

temp=0x7F;

for(i=0;i<8;i++) //8个流水灯依次反向全部点亮

{

P1=temp;

delay(100); //调用延时函数

temp>>=1;

}

void delay(uint t) //定义延时函数

{

register uint bt;

for(;t;t--)

for(bt=0;bt<255;bt++);

}

(4)ms8单片机扩展阅读

51单片机流水灯的源代码如下

#include<reg51.h>

#include<intrins.h>

voiddelay(inta)

{

inti;

while(a--)for(i=0;i<110;i++);

}

main()

{

inti;

while(1)

{

P0=0xfe;

for(i=0;i<8;i++)

{

P0=_crol_(P0,1);

delay(500);

}

}

}

‘伍’ 在单片机中如何用8个发光管演示出8位二进制数字自减过程(用c语言)

#include"reg51.h"

voiddelay(unsignedintms)

{

unsignedchari;

while(ms--)for(i=110;i--;i>0);

}

//-------------------------

voidmain()

{

unsignedcharabc=0;

while(1){

P1=abc;//在P1口外接8个LED,低电平发光.

abc++;//加,负逻辑将显示为自减.

delay(500);//延时,供观察现象.

}}

=============================================

要求由最高位P0^0作为二进制的最高位。

这个新要求,可以在焊接LED器件的时候进行调整。

更改一下程序,也不难,如下:

#include"reg51.h"

unsignedcharbdataabc=0,bbb;

sbita0=abc^0;

sbita1=abc^1;

sbita2=abc^2;

sbita3=abc^3;

sbita4=abc^4;

sbita5=abc^5;

sbita6=abc^6;

sbita7=abc^7;

sbitb0=bbb^0;

sbitb1=bbb^1;

sbitb2=bbb^2;

sbitb3=bbb^3;

sbitb4=bbb^4;

sbitb5=bbb^5;

sbitb6=bbb^6;

sbitb7=bbb^7;

voiddelay(unsignedintms)

{

unsignedchari;

while(ms--)for(i=110;i--;i>0);

}

voidmain()

{

while(1){

b0=a7;

b1=a6;

b2=a5;

b3=a4;

b4=a3;

b5=a2;

b6=a1;

b7=a0;

P1=bbb;

//P1=abc;//在P1口外接8个LED,低电平发光.

abc++;//加,负逻辑将显示为自减.

delay(500);//延时,供观察现象.

}}

‘陆’ 单片机程序 8个发光二极管间隔500ms由上至下,再由下至上,再重复一次,然后全部熄灭再以800ms间隔全部闪

循环7次,使如耐P1口分别为0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe也就是LED循环由高到低流水灯芹稿显示渣首春。

阅读全文

与ms8单片机相关的资料

热点内容
手机淘宝登录怎么加密码 浏览:481
linux快捷方式图标 浏览:33
阳光车险的app叫什么名字 浏览:461
购买单片机的器件时需要给商家啥 浏览:534
并行编译技术的发展 浏览:548
阿里云服务器安装管理 浏览:550
java手机开发教程 浏览:673
我的世界怎么删除服务器数据 浏览:669
linux内存子系统 浏览:972
加密思维币 浏览:690
魅族访客文件夹 浏览:52
添加的文件夹怎么找 浏览:617
程序员涉黄 浏览:700
maven编译resources下的js 浏览:521
ubuntu文件移动命令 浏览:229
安卓i怎么查找苹果手机 浏览:951
云服务器宕机概率 浏览:232
在线买药用什么app知乎 浏览:815
ubuntu解压xz文件 浏览:676
宏杰加密时电脑关机 浏览:390