松翰单片机无极调光程序设计

Python012

松翰单片机无极调光程序设计,第1张

调占空比,具体可以参照51的。

#include<regx51.h>

#define uchar unsigned char

#define uint unsigned int

uchar timer0_tick,ZKB=1//timer0_tick计数,ZKB占空比

uchar i=0,n=0,temp=0

code seven_seg[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}//1,2,3, 4, 5, 6, 7, 8, 9

code scan[2]={0xfd,0xfe}

uchar counter[2]={0,0}

sbit AN1=P3^2//调整个位

sbit AN2=P3^3//调整十位

sbit AN3=P3^4//启动按键

sbit AN4=P3^5//确认按键

void delay(uint z)//软件延时函数

{

uint x,y

for(x=zx>0x--)

for(y=110y>0y--)

}

static void timer0_isr(void) interrupt 1 using 0 //中断函数

{

TR0=0

TL0=0xf6

TH0=0xff

TR0=1

if (ZKB>99) ZKB=1

if (ZKB<1) ZKB=99

counter[0]=ZKB%10

counter[1]=ZKB/10

n++

if(n==100)

{

n=0

i++

if(i==2) i=0

P0=seven_seg[counter[i]]

P2=scan[i]

}

timer0_tick++

if(timer0_tick++==100)

{

timer0_tick=0

}

if(AN2==0)

{

delay(100)

if(AN2==0)

{

temp=1

counter[0]++

if(counter[0]==10)

{

counter[0]=0

}

}

}

if(AN1==0)

{

delay(100)

if(AN1==0)

{

temp=1

counter[1]++

if(counter[1]==10)

{

counter[1]=0

}

}

}

ZKB=counter[0]+counter[1]*10

if(AN4==0)

{

delay(5)

if(AN4==0)

temp=0

}

if(temp==1)

P3_7=0// P3_7为脉冲输出引脚

else

{

if (timer0_tick<=ZKB) /*当小于占空比值时输出低电平,高于时是高电平,从而实现占空比的调整*/

{

P3_7=1

}

else

{

P3_7=0

}

}

}

static void timer0_initialize(void)//中断初始化

{

EA=0

timer0_tick=0

TR0=0

TMOD=0x01

TL0=0xf6

TH0=0xff

PT0=0

ET0=1

TR0=1

EA=1

}

void main(void)

{

STAR: delay(100)

if(AN3!=0) goto STAR//按键3启动脉冲

timer0_initialize()

while(1)

}

//按按键3启动脉冲器,初始设置占空比为1%,按键1调整十位,

//按键2调整个位,一旦调整,输出为0,必须按确认键确认,

//输出正确脉冲.可以占空比1-99%任意调节。

1、如果你是要定义一个位变量的话。一般,我们都先定义一个字节:‘XXX

DS

1’;这个条语句表示定义一个字节,然后,们再定义想要的位变量。比如:‘getdata_flag

equ

xxx.0’。这样我们就定义了一个位变量,如果你还想定义一个位变量,那么你可以再加一条语句:‘getdata_flag

equ

xxx.1’。依此类推。你就可以定义8个位变量。要是你还觉得不够用的话,你可以归以上的做法,再定义一个字节,然后再定义另外8个位变量。

2、如果你是想用一个位来代替I/O口的某一个位的话,你可以直接用:‘YYY

EQU

P1.x’或‘YYY

EQU

P2.x’就可以了。

3、如果你想用一个位代替寄存器的某一位的话,其做法和2当中是一样的。例如:‘zzz

EQU

GIE’。

之前没有接触过着三个品牌的产品,刚刚查阅了一下,简单写一点:

松翰 是台湾的公司,他在工控方面推出的单片机是8位不知道什么架构的内核,ide也是自己做的,目前只支持汇编语言开发,并不支持gcc C语言开发,高级语言编译器好像还没有发布,1997年创办的公司,我看了他的单片机,和stc51系列比较接近,外设和速度基本相同。

飞凌 是河北保定的一家公司,主要做的ARM嵌入式芯片系统,他的工控板主要是cortex-M0,cortex-A系列等,也有8位的单片机,他有sot23-6大小的单片机,可谓是最小的单片机了,也和stc51很像,外设也差不多。但是ide可支持C语言等高级语言编写。

义隆 也是台湾的公司,他在很多方面都有产品,在工控方面的单片机其实也是和stc51差不多,ide可以支持C语言,某宝上还有用飞凌代替义隆的,可见他们有一定的通用性。

综上所述,在工控方面,应该是飞凌的单片机好一些。