找回密码
 注册
LabVIEW+单片机学习套件全套教程资料下载[免费]LabVIEW论坛精华列表贴USB0816数据采集卡《LabVIEW宝典》
LabWindows/CVI论坛精华贴NET0816以太网数据采集卡RC0210远程设备授权系统 关闭关停锁定打开设备 户外分布式数据采集
NET1624低速高精度以太网数据采集卡WIFI0824SD无线WIFI网络数据采集卡脱机运行 SD存储 小尺寸微型 串口采集远程采集 安卓 手持移动采集 纪录仪
查看: 844|回复: 1

求救:有关凌阳61和labview的串口通信

[复制链接]
发表于 2006-5-29 17:55:34 | 显示全部楼层 |阅读模式
如下是我的下位机的程序:
**********************************************定义部分**************************************************
.DEFINE                                           P_ADC_MUX_Ctrl        0x702b
.DEFINE                                           P_ADC_MUX_DATA            0x702C

.INCLUDE hardware.inc

.ISRAM                                            
.PUBLIC      chanal_data            
chanal_data:
   .DW 2 DUP(?)                       
.RAM
.var AD_RESULT;

*******************************************初始化,主函数***********************************************
.CODE
.PUBLIC _main
_main:
_L_INIT:
int off;

r1=0x0700;                       
[P_IOA_Attrib]=r1
[P_IOA_Dir]=r1;
r1=0x0000;
[P_IOA_Data]=r1

r1 = 0x0480;                                 
[P_IOB_Attrib] =r1;
r1 = 0x0400;
[P_IOB_Dir] = r1;
r1 = 0x0000;
[P_IOB_Data] = r1;

r1 = 0x0000;                                      //设置波特率为9600bps
[P_UART_BaudScalarLow] = r1;
r1 = 0x0005;
[P_UART_BaudScalarHigh] = r1;
r1 = 0x0000;
r4 = 0x00C0;                                      //使能输入和输出
[P_UART_Command1] = r1;
[P_UART_Command2] = r4;

r1 = 0xefff;                        //设置定时器2s
[P_TimerA_Data] = r1;
r1 = 0x0005;
[P_TimerA_Ctrl] = r1;
r1 = 0x1000;                                       
[ P_INT_Ctrl] = r1;
int IRQ;
loop:
    R1 = 0x0001;
    [P_Watchdog_Clear] = R1 ;         
    call _F_UART_Read;
    goto loop;

***********************************************接受模块********************************************
.public _F_UART_Read                  
_F_UART_Read:
L_Check_RxRDY:

    R1 = 0x0001;
    [P_Watchdog_Clear] = R1 ;        
   
    r2 = [P_UART_Command2];           //检测是否有数据接收
r2 &= 0x0080;
JZ L_Check_RxRDY;

r1 = [P_UART_Data];                          //接收数据
cmp r1,0x0000;
je out;
cmp r1,0x0001;
je out1;
cmp r1,0x0002;
je out2;
jne out3;
out:
    r3=0x0100;
[P_IOA_Data]=r3;                  //做动作
retf;

out1:
    r3 = 0x0200;
    [P_IOA_Data]=r3;                  //做动作
retf;
                                                   
out2:
    r3=0x0400;
    [P_IOA_Data]=r3;                  //做动作
retf;
                                                   
out3:
    r3=0x0000;
    [P_IOA_Data]=r3;                  //做动作
retf;
****************************************************************发送模块*******************************************
.PUBLIC _F_UART_Write                     
_F_UART_Write:
L_Check_TxRDY:
                                                              
R1 = 0x0001;
[P_Watchdog_Clear] = R1 ;                  
r2 = [P_UART_Command2];
r2 &= 0x0040;                                                
JZ L_Check_TxRDY;

L_Clear:
    R2 = 0x0000                 
R3=chanal_data

L_Chanal:
    CMP R2, 0x0002
    JE _tiao;
    R2+=1                                   
    [P_ADC_MUX_Ctrl] = R2
                                                
R1 = 0x0001                              
    [P_ADC_Ctrl] = R1                    
     
    call L_AD
   
    [R3++]=R1                                          
R1=0  

L_DelayLoop:                              
    R4 = 0x0001;                     
[P_Watchdog_Clear] = R4;                       
    R1+=1
    JNZ L_DelayLoop  
    JMP L_Chanal
_tiao:
      retf;

*******************************************AD子模块************************************
L_AD:                                  //AD  

    R1 = [P_ADC_MUX_Ctrl]              
    TEST R1,0x8000                     
    JZ L_AD                        
    R1 = [P_ADC_MUX_DATA]              
    R1 = R1 LSR 4
    R1 = R1 LSR 2
    [AD_RESULT] = R1               
R4 = [AD_RESULT];
    [P_UART_Data] = r4;                           
    R1 = R1 LSR 4
    R1 = R1 LSR 4
    R1 &=0x0003
    [AD_RESULT] = R1
    R4 = [AD_RESULT];
    [P_UART_Data] = r4;                              
    retf;
*************************************************中断***************************************************   
.TEXT                                         
.PUBLIC _IRQ1;                        
_IRQ1:
    int off                                    
    push r1,r5 to [sp];                                                                                    
    call _F_UART_Write;

    r1 = 0x1000;
    [P_INT_Clear] = r1;
    pop r1,r5 from [sp];   
    int irq;
    reti;
硬件部分是通过串口电平转换电路连接61单片机的b07和b10口,请问如果用labview做上位机通过串口发送程序,应该怎么写啊?下位机要接受一个四位16进制的数,应该怎么通过串口来实现啊?急用,谢谢!
[此贴子已经被作者于2006-5-29 10:14:16编辑过]

发表于 2006-5-29 21:45:52 | 显示全部楼层
<>呵呵,不好意思,凌阳的单片机没有用过!</P>
<>不过相信单片机都差不多原理,可以看看这个书:</P>
<><a href="http://www.cpubbs.com/old_bbs/dispbbs.asp?boardID=4&amp;ID=14252&amp;page=1" target="_blank" >http://www.cpubbs.com/old_bbs/dispbbs.asp?boardID=4&amp;ID=14252&amp;page=1</A></P>
<P>图片上方有下载链接的,免费下载的!</P>
回复 顶

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|cpubbs论坛. ( 粤ICP备09171248号 )

GMT+8, 2026-9-29 12:20 , Processed in 0.025132 second(s), 6 queries , Gzip On, File On.

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表