下面是一个单片机与个人电脑机通信的程序,个人电脑机程序用c语言来编写
1.个人电脑机编程
个人电脑采用图布尔C进行编写。程序如下:
#包括《stdio.h》
#定义端口0x3f8
int ch[15];
主()
{
int a;
int i,j;
int b[6]={88,15,38,26,20,0 };
char c;
clr SCR();
输出b(端口3,0x 80);
输出b(端口,0x0C);
输出b(端口1,0x 00);
输出b(端口3,0x 03);
输出b(端口1,0x 00);
输入b(端口5);
{
printf(发送数据还是接收数据:(s还是r?));
c=getchar();
开关(三)
{
案例:
案例:
{
而(!(输入b(端口5)0x 20));
输出b(端口,0x 01);
for(I=0;我《6;i )
{
a=b[I];
而(!(输入端口乙(端口5)0x20))
延迟(100);
输出b(港口,a);
printf(% d ,a);
而(!(in端口(port 5)1));
ch[I]=输入;
}
延迟(10);
for(j=0;j《8;j )
printf(% d ,ch[j]);
getch();
打破;
}
案例" r"
案例“r”:
{
而(!(输入b(端口5)0x 20));
输出b(端口,0x 02);
for(j=0;j《9;j )
{
而(!(输入端口b(端口5)1));
ch[j]=inportb(端口);
}
for(j=0;j《9;j)
printf(% d ,ch[j]);
getch();
打破;
}
}
}
}
2.单片机与个人电脑机通信之单片机程序
列表P=16F876
#包括P16F876 .股份有限公司
CBLOCK 0X24
数数
临时雇员
ENDC
组织0X0000
没有其他规定除非另有规定
开始转到主页
组织0X020
主MOVLW 0X30将随机存取存储单元初始化
MOVWF FSR
溴氯二氟代甲烷状态,RP0
MOVLW 0X22
MOVWF计数
内部移动计数,0
MOVWF INDF
INCF计数,1
INCFFSR,1岁岁
BTFSS FSR,7
转到内部
班克塞尔TXSTA波特率设置为9 600个基点
MOVLW 0X19
MOVWF SPBRG异步高速方式
MOVLW 0X04
MOVWF TXSTA
溴氯二氟代甲烷状态,RP0
MOVLW 0X80串行口使能
MOVWF RCSTA
MOVLW 0X30
MOVWF FSR
CRENBSFRCSTA;接收允许
BSF地位,RP0
BSF TXSTA,TXEN发送允许
溴氯二氟代甲烷状态,RP0
等待BTFSS PIR1,RCIF接收个人电脑机命令
转到等待
MOVF寄存器,0
MOVWF温度
MOVWF INDF
INCFFSR
DECFSZ温度;接收到的数据为1,则接收
后藤TXW;否则发送数据
MOVLW 0X06
MOVWF温度
WAIT1 BTFSS PIR1,RCIF接收一个数据
转到等待一
MOVF寄存器,0
MOVWF计数
MOVWF TXREG
LOOPTX BTFSS PIR1,TXIF将接收到的数据送回个人电脑机
转到LOOPTX
MOVF计数,0
MOVWF INDF
INCFFSR
DECFSZ温度
转到等待一
转到结束;处理完毕
TXW MOVLW0x 09;向个人电脑机发送9个数据
MOVWF温度
MOVLW 0X30
MOVWF FSR
txw 0莫夫INDF,0
MOVWF TXREG
INCFFSR
TXW1 BTFSS PIR1,TXIF
转到TXW1
DECFSZ温度
转到TXW0
通过BCF RCSTA上空;通信任务完成,关接受和发送允许
BSF地位,RP0
BCF TXSTA,TXEN
溴氯二氟代甲烷状态,RP0
呼叫发光二极管调用显示子程序,将发送(或接收)的数据显示出来
结束;程序完
标签:端口B状态