
注意:下面的程序并不是一份完整的程序,而是一个简单的框架。你需要根据你的实明蚂粗际情况来修改程序。
Copy code#include <stdio.h>#include <string.h>// 定义常量#define BUFFER_SIZE 1024// 定义数据结构struct packet {
int source int destination char data[BUFFER_SIZE]
}// 定义函数void send_packet(struct packet *p)void receive_packet(struct packet *p)int main() { struct packet p
// 填充数据
p.source = 1
p.destination = 2 strcpy(p.data, "Hello, World!") // 发送数据包
send_packet(&p) // 接收数据包
receive_packet(&p) return 0
}void send_packet(struct packet *p) { // 在这里实现数据包的发送
// 你可以使用串口函数或者其他函数来发送数据包}void receive_packet(struct packet *p) { // 在这里实现数据包的接收
// 你激镇可以使用串口函物模数或者其他函数来接收数据包}
我希望这个框架可以帮助你开始编写自己的单片机同线交换机程序。如果你有任何其他问题,请随时向我提出。
首先定义了一个input的结构体,成员为ucPV、ucBD、ucBA接下来4句话:
1.引脚B的值取反赋给uc_pv;
2.uc_pv的值异或端口值,然并枝猜后将值赋给uc_temp;
3.uc_temp与上端口值赋绝型值给下降沿;
4.当前值也就是引脚B的值赋给端口值;
字面意思就是搭局这样了。。。
#include <AT89X52.H>unsigned char dispbitcnt //数码管位码扫描变量unsigned char second //秒变量
unsigned char minite //分变量
unsigned char hour //时变量
unsigned char tcnt //秒信号产生变量
unsigned char mstcnt //扫描时间变量 const unsigned char dispcode[10]={0xc0,0xf9,0xa4,0xb0,0x99,<br>0x92,0x82,0xf8,0x80,0x90}
//0123456789段码
const unsigned char dispbitcode[6]={0xfe,0xfd,0xfb,0xf7,<br> 0xef,0xdf}
//123456位码
unsigned char dispbuf[6]={0,0,0,0,0,0}
//缓冲数者旦组
//**************TMR0中断数码管扫描程序*********************
void Timer0() interrupt 1
{P2=dispcode[dispbuf[dispbitcnt]]//段码
P1=dispbitcode[dispbitcnt]//位码
dispbitcnt++
if(dispbitcnt==6)
{dispbitcnt=0<br> }
tcnt++ //中断产生秒信号
if(tcnt==244)
{tcnt=0<br> second++<br> if(second==60)<br> {second=0<br> minite++<br> if(minite==60)<br> {minite=0<br>hour++<br>if(hour==24)<br> {hour=0<br> }
}
}
dispbuf[4]=second%10 //得秒钟的低位,送缓冲数组
dispbuf[5]=second/10//得秒钟的高位,送缓冲数组
dispbuf[2]=minite%10//得分钟的低位,送缓冲数组
dispbuf[3]=minite/10//得分钟的高位,送缓冲数组
dispbuf[0]=hour%10//得时钟的低位,送缓冲数组
dispbuf[1]=hour/10 //得时钟的高位,送缓冲数组
}
TMOD=0x01
TL0=0x10
TH0=0xf0 }
/首薯扰//****************1ms延时程序手族******************
void delay_1ms(unsigned char i)
{
unsigned char j
for(i=0i<144i++)
for(j=0j<144j++)
} ///****************按键检测*********************
void key_scan(void)
{
while(1)
{
if(P3_0==0)
{
delay_1ms(20)
if(P3_0==0)
{second++<br>if(second==60)<br> {second=0<br> }
dispbuf[4]=second%10
dispbuf[5]=second/10
while(P3_0==0)
}
}
if(P3_1==0)
{
delay_1ms(20)
if(P3_1==0)
{
minite++
if(minite==60)
{minite=0<br> }
dispbuf[2]=minite%10
dispbuf[3]=minite/10
while(P3_1==0)
}
}
if(P3_2==0)
{
delay_1ms(20)
if(P3_2==0)
{
hour++
if(hour==24)
{
hour=0
}
}
dispbuf[0]=hour%10
dispbuf[1]=hour/10
while(P3_2==0)
}
}
}
//*************主程序********************
void main(void)
{
TMOD=0x01TL0=0x10
TH0=0xf0
while(1)
{
dispbitcnt=0P1=0x00 //开段码
P2=0x00 //开位码
delay_1ms(200) //延时
delay_1ms(200) //延时
delay_1ms(200) //延时
delay_1ms(200) //延时
P2=0xff //关位码EA=1
ET0=1
TR0=1
key_scan()
}
}
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)