#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、如果你是要定义一个位变量的话。一般,我们都先定义一个字节:‘XXXDS
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语言,某宝上还有用飞凌代替义隆的,可见他们有一定的通用性。
综上所述,在工控方面,应该是飞凌的单片机好一些。