单片机程序 急求流程图 ;1、0809的片选信号CS0809接CS0。 ;2、电位器的输出信号AN0接0809的ADIN0。 ;3、EO

单片机程序 急求流程图 ;1、0809的片选信号CS0809接CS0。 ;2、电位器的输出信号AN0接0809的ADIN0。 ;3、EO,第1张

#include "reg51h"

#define data_point P0

sbit EOC=P2^0;

sbit ADDA=P2^1;

sbit ADDB=P2^2;

sbit ADDC=P2^3;

sbit OE=P2^5;

sbit START=P2^6;

sbit CLK=P2^7;

sbit ALE=P2^6;

unsigned char disp[3]={0,0,0};

char code dispcode[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};

unsigned char t0count=0;

unsigned int temp;

double sum;

unsigned char val_Integer; //整数

unsigned int val_Decimal; //小数

sbit k1 = P1^0;

sbit k2 = P1^1;

sbit k3 = P1^2;

sbit k4 = P1^3;

void delay(unsigned char ms)

{

unsigned char i;

while(ms--)

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

}

void display()

{

disp[0]=disp[0]&0x7f;

P3= disp[0];

k1 = 1;

delay(2);

k1 = 0;

P3= disp[1];

k2 = 1;

delay(2);

k2 = 0;

P3= disp[2];

k3 = 1;

delay(2);

k3 = 0;

P3= disp[3];

k4 = 1;

delay(2);

k4 = 0;

}

unsigned char ADC0808()

{

unsigned char d;

ADDC=0;

ADDB=0;

ADDA=0;

TR1=1;

ALE=1;ALE=0;

START=1;START=0;

while(EOC==0);

OE=1;

d=data_point;

OE=0;

TR1=1;

return d;

}

void covert(unsigned char x)

{

sum=x00201378;

val_Integer=(unsigned char)sum;

val_Decimal=(unsigned int)((sum-val_Integer)1000);

disp[3]=dispcode[val_Decimal%10];

disp[2]=dispcode[val_Decimal/10%10];

disp[1]=dispcode[val_Decimal/100];

disp[0]=dispcode[val_Integer];

}

void main()

{

TMOD=0x21;

TH0=(65536-10000)/256;

TL0=(65536-10000)%256;

TH1=256-2;

ET0=1;

ET1=1;

EA=1;

TR0=1;

OE=0;

START=0;

EOC=1;

while(1)

{

display();

}

}

void time0() interrupt 1

{

TH0=(65536-10000)/256;

TL0=(65536-10000)%256;

t0count++;

if(t0count==100)

{

t0count=0;

covert(ADC0808());

}

}

void time1() interrupt 3

{

CLK=~CLK;

}

OSSched函数用于查找并切换到优先级最高且处于就绪态的任务。 根据OS_Sched函数源码分析,执行流程为:1、先判断中断嵌套层数是否为0;2、再判断是否锁定任务不能切换;3、查找处于就绪态的最高优先级任务;4、执行任务切换。 创建任务时使用OSS

设一个标志位flag, 以标志位的5种状态对应发光二极管的5种工作状态,如当flag=1;发光二极管工作在1,当flag=2;发光二极管工作在2,!然后根据定时器定时功能,5秒到,刷新flag的值,程序如下;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;/程序功能:定时5S到切换LED显示状态

;作者:w4187818402008529 /

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

FLAG BIT 30H ;定义标志位

ORG 0

LJMP MAIN

ORG 0BH

LJMP AGA

;;;;;;主程序;;;;;;;;;;;;

ORG 0030H

MAIN: MOV FLAG,#01H ;标志位清0

MOV TMOD,#01H ;赋值50MS

MOV TH0,#3CH

MOV TL0,#0B0H

MOV R0,#100 ;中断10050=5S

SETB EA

SETB ET0

SETB TR0

SJMP $

;;;;;;;;;中断服务程序;;;;;;;;;;;;;;

AGA: MOV TH0,#3CH

MOV TL0,#0B0H

DJNZ R0,LOOP ;5S到否否,返回

INC FLAG ;到,标志加1

MOV A,FLAG

CJNE A,#05,L1 ;扫描5种状态了否

MOV FLAG,#01H ;是,归0,重新开始

;;;;;;;;;切换程序;;;;;;;;;;;;

L1: CJNE A,#01H,L2 ;判断是否是状态1否,转判断2

LCALL LED1 ;是,调有状态1

SJMP LOOP ;返回

L2: CJNE A,#02H,L3 ; 以下跟上面判断相同

LCALL LED2

SJMP LOOP

L3: CJNE A,#03H,L4

LCALL LED3

SJMP LOOP

L4: CJNE A,#04H,L5

LCALL LED4

SJMP LOOP

L5: CJNE A,#05H,LOOP

LCALL LED5

LOOP: RETI

;;;;;;LED子程序区;;;;;;;;;;

LED1: RET

LED2: RET

LED3: RET

LED4: RET

LED5: RET

/////////////////

///////////////////////////////

/程序功能:定时5S到切换LED显示状态

作者:w4187818402008529 /

//========声明区===========

#include <reg51h>

unsigned char count=0;

unsigned char flag=1;

void led1(void);

void led2(void);

void led3(void);

void led4(void);

void led5(void);

//=========函数=========

main()

{ TMOD=0x01;

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

EA=1;

ET0=1;

TR0=1;

while(1)

{ switch(flag)

{ case 1:led1();break;

case 2:led1();break;

case 3:led1();break;

case 4:led1();break;

case 5:led1();break;

}

}

}

//==========中断服务============

void timer0(void) interrupt 1

{ TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

if(++count==100)

{ count=0;

flag++;

if(flag==5)

flag=1;

}

}

//========5种状态函数区=========

plc编程口诀如下:

1、位置控制指令,每次回原点或者开始的瞬间清零当前位置。

2、位置控制在回到原始位置的时候,一定要用回原点指令,不可以走数据。

3、位置控制时,最好用脉冲+方向控制,尽量不要使用双脉冲。

4、有用到上升沿或下降沿的时候,触点必须放在输出线圈的后面。

5、仅有两个取值,0或1、ON或OFF。

特点:

PLC由继电控制引入微处理技术后发展而来的,可方便及可靠地用于开关量控制。由于模拟量可转换成数字量,数字量只是多位的开关量,故经转换后的模拟量,PLC也完全可以可靠地进行处理控制。

PLC脉冲量的控制目的主要是位置控制、运动控制、轨迹控制等。例如:脉冲数在角度控制中的应用。步进电机驱动器的细分是每圈10000,要求步进电机旋转90度。那么所要动作的脉冲数值=10000/(360/90)=2500。

以上就是关于单片机程序 急求流程图 ;1、0809的片选信号CS0809接CS0。 ;2、电位器的输出信号AN0接0809的ADIN0。 ;3、EO全部的内容,包括:单片机程序 急求流程图 ;1、0809的片选信号CS0809接CS0。 ;2、电位器的输出信号AN0接0809的ADIN0。 ;3、EO、ucosii程序的流程图怎么画、用C语言编写一个花样流水灯的程序及此程序的流程图等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9339044.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存