您现在所在的是:

单片机论坛

回帖:10个,阅读:1779 [上一页] [1] [2] [下一页]
1049
wxs732
文章数:33
年度积分:50
历史总积分:1049
注册时间:2006/7/30
发站内信
发表于:2009/9/4 0:13:07
#0楼
有几个命令,我想通过232 发送,不要电脑软件发送,
想通过硬件电路 发送
向上 up 8x 01 06 01 vv ww 03 01 ff \x81\x01\x06\x01 \x07\x07\x03\x01\xff
        向下 down 8x 01 06 01 vv ww 03 02 ff \x81\x01\x06\x01\x07\x07\x03\x02\xff
        向左 left 8x 01 06 01 vv ww 01 03 ff 81 01 06 01 07 07 01 03 ff \x81\x01\x06\x01\x07\x07\x01\x03\xff
        向右 right 8x 01 06 01 vv ww 02 03 ff \x81\x01\x06\x01\x07\x07\x02\x03\xff
        向上左方upleft 8x 01 06 01 vv ww 01 01 ff
        向上右方upright         8x 01 06 01 vv ww 02 01 ff
        向下左方downleft        8x 01 06 01 vv ww 01 02 ff
        向下右方downright       8x 01 06 01 vv ww 02 02 ff
        停止    stop   8x 01 06 01 vv ww 03 03 ff
                                81 01 06 01 07 07 03 03 ff
                                \x81\x01\x06\x01\x07\x07\x03\x03\xff
1384
renhuajian
文章数:220
年度积分:50
历史总积分:1384
注册时间:2006/2/1
发站内信
发表于:2009/9/4 15:50:02
#1楼
单片机也是要写程序到里面去,然后才能发命令,单独靠硬件无法实现
1049
wxs732
文章数:33
年度积分:50
历史总积分:1049
注册时间:2006/7/30
发站内信
发表于:2009/9/5 13:14:00
#2楼
谢谢,
    这个,我明白, 程序我也可以写出来,
   可,有个问题,
  单片机串口有4中方法,  就是选一中,每次只能发送 一个8位的数据, 要是发一条命令的话就要
"   81\01\06\01 \07\07\03\01\ff"
  这多少位了?
 
  如果说的不对还望各位 指出啊 ?

  我想他是不是这样的 假如 我发上面的命令 先给寄存器一个定值比如是8,( 上面是9位, ) 我先发送一位后判断这条指令是否发送完毕, 否, 继续发送下一位数据,这样发送够 8位 或 9位后 ,在跳到主程序中,循环扫描是否有别的 命令需要执行,如果有命令 ,采用同样的方法执行别的命令?



望,各位师傅,指教了?  这点我仔细看了资料, 但始终没找到对着说的比较详细的 书籍 ,本人在郑州如果有朋友也是郑州的话,非常愿意到 贵俯拜访  


1049
wxs732
文章数:33
年度积分:50
历史总积分:1049
注册时间:2006/7/30
发站内信
发表于:2009/10/14 8:43:47
#3楼
真是郁闷,
 这是我写的一部分汇编
 请大家 帮忙 查查是否有错误,还是全错,
         org 0000h
      sjmp start
      org 0030h
start:   mov tmod,#20h
        mov th1,#0fah
mov tl1,#0fah
mov scon,#50h
mov pcon,#80h
setb tr1
mov r0,#00h       ;给P0赋值  
      mov a,r0
nokey0:  mov p0,#0ffh      ;给P1口赋值
      clr p0.4          ; 清 位P1。4=0
      mov a,p0         ;在把 =11101111---A
      anl a,#0ffh        ;11101111 与 00001111=00001111
      xrl a,#0ffh        ; 00001111 异或 00001111= 00000000  (相同为0,不同为1)
      jz nokey1         ;判断A是否=0 ,转移,A=1顺序执行    
      mov a,p0          ;测试 P1口给A
      anl a,#0fh        ;A 相与 0FH =A
      cjne a,#0eh,next1 ; 比较A 是否等于 0EH,相等顺序执行,否跳到NEXT1处。壹百                
up1:            mov a,r0
      mov dptr,#up
      movc a,@a+dptr
      mov sbuf,a
jnb ti,$
clr ti
inc r0
cjne r0,#09h,up1
ajmp nokey0
next1: cjne a,#0dh,next2 ;比较判断
down1:          mov a,r0
      mov dptr,#down
      movc a,@a+dptr
      mov sbuf,a
jnb ti,$
clr ti
inc r0
cjne r0,#09h,down1
ajmp nokey0
next2: cjne a,#0bh,next3 ; 比较
left1:          mov a,r0
      mov dptr,#left
      movc a,@a+dptr
      mov sbuf,a
jnb ti,$
clr ti
inc r0
cjne r0,#09h,left1
ajmp nokey0
next3: cjne a,#07h,nokey0; 比较
right1:         mov a,r0
      mov dptr,#right
      movc a,@a+dptr
      mov sbuf,a
jnb ti,$
clr ti
inc r0
cjne r0,#09h,right1
ajmp nokey0         ; 如果 a不对于1 / 2 /3 则跳到nokey0 处继续判断
nokey1:mov p0,#0ffh      ;
      clr p0.5
      mov a,p0
      anl a,#0fh
      xrl a,#0fh
      jz nokey2
      mov a,p0
      anl a,#0fh
      cjne a,#0eh,next5
jdwz1:             mov a,r0
      mov dptr,#jdwz
      movc a,@a+dptr
      mov sbuf,a
jnb ti,$
clr ti
inc r0
cjne r0,#0eh,jdwz1
ajmp nokey1    
next5: cjne a,#0dh,next6;
xdwz1: mov a,r0
      mov dptr,#jdwz
      movc a,@a+dptr
      mov sbuf,a
jnb ti,$
clr ti
inc r0
cjne r0,#0eh,xdwz1
ajmp nokey1  
     
next6: cjne a,#0bh,next7;
yd1:   mov a,r0
      mov dptr,#yd
      movc a,@a+dptr
      mov sbuf,a
jnb ti,$
clr ti
inc r0
cjne r0,#04h,yd1
ajmp nokey1
next7: cjne a,#07h,nokey1;
fw1:   mov a,r0
      mov dptr,#fw
      movc a,@a+dptr
      mov sbuf,a
jnb ti,$
clr ti
inc r0
cjne r0,#09h,fw1
ajmp nokey1
nokey2:mov p0,#0ffh;
      clr p0.6
      mov a,p0
      anl a,#0fh
      xrl a,#0fh
      jz nokey3
      mov a,p0
      anl a,#0fh
      cjne a,#0eh,next9;
poweron1: mov a,r0
      mov dptr,#poweron
      movc a,@a+dptr
      mov sbuf,a
jnb ti,$
clr ti
inc r0
cjne r0,#05h,poweron1
ajmp nokey2
     
next9: cjne a,#0dh,next10;
poweroff1: mov a,r0
      mov dptr,#poweroff
      movc a,@a+dptr
      mov sbuf,a
jnb ti,$
clr ti
inc r0
cjne r0,#05h,poweroff1
ajmp nokey2
     
next10:cjne a,#0bh,next11;
bjstop1: mov a,r0
      mov dptr,#bjstop
      movc a,@a+dptr
      mov sbuf,a
jnb ti,$
clr ti
inc r0
cjne r0,#05h,bjstop1
ajmp nokey2
   
next11:cjne a,#07h,nokey2;
bjlj1: mov a,r0
      mov dptr,#bjlj
      movc a,@a+dptr
      mov sbuf,a
jnb ti,$
clr ti
inc r0
cjne r0,#05h,bjlj1
ajmp nokey2
     
nokey3:mov p0,#0ffh;
      clr p0.7
      mov a,p0
      anl a,#0fh
      xrl a,#0fh
      jz nokey4
      mov a,p0
      anl a,#0fh
      cjne a,#0eh,next13;
bjtj1: mov a,r0
      mov dptr,#bjtj
      movc a,@a+dptr
      mov sbuf,a
jnb ti,$
clr ti
inc r0
cjne r0,#05h,bjtj1
ajmp nokey3
     
next13:cjne a,#0dh,next14  ;
jjstop1:mov a,r0
      mov dptr,#jjstop
      movc a,@a+dptr
      mov sbuf,a
      jnb ti,$
      clr ti
      inc r0
      cjne r0,#05h,bjstop1
      ajmp nokey3
next14:cjne a,#0bh,next15;
jjyj1: mov a,r0
      mov dptr,#jjyj
      movc a,@a+dptr
      mov sbuf,a
      jnb ti,$
      clr ti
      inc r0
      cjne r0,#05h,jjyj1
      ajmp nokey3
   
next15:cjne a,#07h,nokey3;
jjjj1: mov a,r0
      mov dptr,#jjjj
      movc a,@a+dptr
      mov sbuf,a
      jnb ti,$
      clr ti
      inc r0
      cjne r0,#05h,jjjj1
      ajmp nokey3
   


     
nokey4:  mov p1,#0ffh    
      clr p1.4          
      mov a,p1          ;
      anl a,#0fh        ;
      xrl a,#0fh        ;
      jz nokey5        ;  
      mov a,p1          ;
      anl a,#0fh        ;
      cjne a,#0eh,next16 ;
zdjj1:       mov a,r0
      mov dptr,#zdjj
      movc a,@a+dptr
      mov sbuf,a
      jnb ti,$
      clr ti
      inc r0
      cjne r0,#05h,zdjj1
      ajmp nokey4                  ;
               ;
next16: cjne a,#0dh,next17 ;
sdjj1:       mov a,r0
      mov dptr,#sdjj
      movc a,@a+dptr
      mov sbuf,a
      jnb ti,$
      clr ti
      inc r0
      cjne r0,#05h,sdjj1
      ajmp nokey4
   
next17: cjne a,#0bh,next18;
zsqh1:       mov a,r0
      mov dptr,#zsqh
      movc a,@a+dptr
      mov sbuf,a
      jnb ti,$
      clr ti
      inc r0
      cjne r0,#05h,zsqh1
      ajmp nokey4
     
next18: cjne a,#07h,nokey4;
bphzd1:       mov a,r0
      mov dptr,#bphzd
      movc a,@a+dptr
      mov sbuf,a
      jnb ti,$
      clr ti
      inc r0
      cjne r0,#05h,bphzd1
      ajmp nokey4
                ;
nokey5:mov p1,#0ffh      ;
      clr p1.5
      mov a,p1
      anl a,#0fh
      xrl a,#0fh
      jz nokey6  
      mov a,p1
      anl a,#0fh
      cjne a,#0eh,next19
bphsn1:       mov a,r0
      mov dptr,#bphsn
      movc a,@a+dptr
      mov sbuf,a
      jnb ti,$
      clr ti
      inc r0
      cjne r0,#05h,bphsn1
      ajmp nokey5
     
next19: cjne a,#0dh,next20;
bphsw1:       mov a,r0
      mov dptr,#bphsw
      movc a,@a+dptr
      mov sbuf,a
      jnb ti,$
      clr ti
      inc r0
      cjne r0,#05h,bphsw1
      ajmp nokey5
     
next20: cjne a,#0bh,next21;
ldfw1:       mov a,r0
      mov dptr,#ldfw
      movc a,@a+dptr
      mov sbuf,a
      jnb ti,$
      clr ti
      inc r0
      cjne r0,#05h,ldfw1
      ajmp nokey5
     
next21: cjne a,#07h,nokey5;
ldzj1:       mov a,r0
      mov dptr,#ldzj
      movc a,@a+dptr
      mov sbuf,a
      jnb ti,$
      clr ti
      inc r0
      cjne r0,#05h,ldzj1
      ajmp nokey5
     
nokey6:mov p1,#0ffh;
      clr p1.6
      mov a,p1
      anl a,#0fh
      xrl a,#0fh
      jz nokey7
      mov a,p1
      anl a,#0fh
      cjne a,#0eh,next22;
ldjs1:       mov a,r0
      mov dptr,#ldjs
      movc a,@a+dptr
      mov sbuf,a
      jnb ti,$
      clr ti
      inc r0
      cjne r0,#05h,ldjs1
      ajmp nokey6
 
next22: cjne a,#0dh,next23;
kmfw1:       mov a,r0
      mov dptr,#kmfw
      movc a,@a+dptr
      mov sbuf,a
      jnb ti,$
      clr ti
      inc r0
      cjne r0,#05h,kmfw1
      ajmp nokey6
   
next23:cjne a,#0bh,next24;
kmzj1:       mov a,r0
            mov dptr,#kmzj
      movc a,@a+dptr
      mov sbuf,a
      jnb ti,$
      clr ti
      inc r0
      cjne r0,#05h,kmzj1
      ajmp nokey6
   
next24:cjne a,#07h,nokey6;
kmjs1:       mov a,r0
      mov dptr,#kmjs
      movc a,@a+dptr
      mov sbuf,a
      jnb ti,$
      clr ti
      inc r0
      cjne r0,#05h,kmjs1
      ajmp nokey6
     
nokey7:mov p1,#0ffh;
      clr p1.7
      mov a,p1
      anl a,#0fh
      xrl a,#0fh
      jz nokey8
      mov a,p1
      anl a,#0fh
      cjne a,#0eh,next25;
gqfw1: mov a,r0
      mov dptr,#gqfw
      movc a,@a+dptr
      mov sbuf,a
      jnb ti,$
      clr ti
      inc r0
      cjne r0,#05h,gqfw1
      ajmp nokey7
 
next25:cjne a,#0dh,next26 ;
gqzj1:     mov a,r0
      mov dptr,#gqzj
      movc a,@a+dptr
      mov sbuf,a
      jnb ti,$
      clr ti
      inc r0
      cjne r0,#05h,gqzj1
      ajmp nokey7
   
next26:cjne a,#0bh,next27;
gqjs1:      mov a,r0
      mov dptr,#gqjs
      movc a,@a+dptr
      mov sbuf,a
      jnb ti,$
      clr ti
      inc r0
      cjne r0,#05h,gqjs1
      ajmp nokey7
   
next27:cjne a,#07h,nokey7;
zyfw1:      mov a,r0
      mov dptr,#zyfw
      movc a,@a+dptr
      mov sbuf,a
      jnb ti,$
      clr ti
      inc r0
      cjne r0,#05h,zyfw1
      ajmp nokey7
 


                       
nokey8:  mov p2,#0ffh      ;给P1口赋值
      clr p2.4          ; 清 位P1。4=0
      mov a,p2          ;在把 =11101111---A
      anl a,#0fh        ;11101111 与 00001111=00001111
      xrl a,#0fh        ; 00001111 异或 00001111= 00000000  (相同为0,不同为1)
      jz nokey9       ;判断A是否=0 ,转移,A=1顺序执行    
      mov a,p2          ;测试 P1口给A
      anl a,#0fh        ;A 相与 0FH =A
      cjne a,#0eh,next28 ; 比较A 是否等于 0EH,相等顺序执行,否跳到NEXT1处。
zyzj1:        mov a,r0
      mov dptr,#zyzj
      movc a,@a+dptr
      mov sbuf,a
      jnb ti,$
      clr ti
      inc r0
      cjne r0,#05h,zyzj1
      ajmp nokey8                  ;把立即数送给KEY=  0----30H单元
          ;跳到OK处
next28: cjne a,#0dh,next29 ;比较判断
zyjs1:      mov a,r0
      mov dptr,#zyjs
      movc a,@a+dptr
      mov sbuf,a
      jnb ti,$
      clr ti
      inc r0
      cjne r0,#05h,zyjs1
      ajmp nokey8
   
next29: cjne a,#0bh,next30 ; 比较
bgbcon1:        mov a,r0
      mov dptr,#bgbcon
      movc a,@a+dptr
      mov sbuf,a
      jnb ti,$
      clr ti
      inc r0
      cjne r0,#05h,bgbcon1
      ajmp nokey8
 
next30: cjne a,#07h,nokey8; 比较
bgboff1:        mov a,r0
      mov dptr,#bgboff
      movc a,@a+dptr
      mov sbuf,a
      jnb ti,$
      clr ti
      inc r0
      cjne r0,#05h,bgboff1
      ajmp nokey8
            ; 如果 a不对于1 / 2 /3 则跳到nokey0 处继续判断
nokey9:mov p2,#0ffh      ;
      clr p2.5
      mov a,p2
      anl a,#0fh
      xrl a,#0fh
      jz nokey10
      mov a,p2
      anl a,#0fh
      cjne a,#0eh,next31
      ljmp start
 
next31: cjne a,#0dh,next32;
       ljmp start
 
next32: cjne a,#0bh,next33;
        ljmp start
     
next33: cjne a,#07h,nokey9;
       ljmp start
   
nokey10:mov p2,#0ffh;
      clr p2.6
      mov a,p2
      anl a,#0fh
      xrl a,#0fh
      jz nokey11
      mov a,p2
      anl a,#0fh
      cjne a,#0eh,next34;
      ljmp start
 
next34: cjne a,#0dh,next35;
       ljmp start
   
next35:cjne a,#0bh,next36;
       ljmp start
 
next36:cjne a,#07h,nokey10;
      ljmp start
   
nokey11:mov p2,#0ffh;
      clr p2.7
      mov a,p2
      anl a,#0fh
      xrl a,#0fh
      jz nokey12
      mov a,p2
      anl a,#0fh
      cjne a,#0eh,next37;
      ljmp start
   
next37:cjne a,#0dh,next38  ;
      ljmp start
   
next38:cjne a,#0bh,next39;
   
      ljmp start
next39:cjne a,#07h,nokey12;
      ljmp start
     
nokey12: ljmp start


up:   db 81h,01h,06h,01h,05h,06h,03h,01h,0ffh ;向上
down: db 81h,01h,06h,01h,05h,06h,03h,02h,0ffh ;向下
left: db 81h,01h,06h,01h,05h,06h,01h,03h,0ffh ;向左
right:db 81h,01h,06h,01h,05h,06h,02h,03h,0ffh ;向右
setp: db 81h,01h,06h,01h,05h,06h,03h,03h,0ffh ;停止
jdwz: db 81h,01h,06h,03h,05h,06h,00h,00h,00h,00h,00h,00h,00h,00h,0ffh ;绝对位置
xdwz: db 81h,01h,06h,03h,05h,06h,00h,00h,00h,00h,00h,00h,00h,00h,0ffh ;相对位置
yd:   db 81h,01h,06h,04h,0ffh  ;原点位置
fw:   db 01h,01h,06h,05h,0ffh  ;复位
poweron:  db 81h,01h,04h,00h,02h,0ffh    ;对D70开启电源
poweroff: db 81h,01h,04h,00h,03h,0ffh    ;关闭D70电源,停止工作
bjstop:   db 81h,01h,04h,07h,00h,0ffh    ;变焦停止
bjlj:     db 81h,01h,04h,07h,02h,0ffh    ;变焦拉近
bjtj:     db 81h,01h,04h,07h,03h,0ffh    ;变焦推远
jjstop:   db 81h,01h,04h,08h,00h,0ffh    ;聚焦停止
jjyj:     db 81h,01h,04h,08h,02h,0ffh    ;聚焦远焦
jjjj:     db 81h,01h,04h,08h,03h,0ffh    ;聚焦近焦
zdjj:     db 81h,01h,04h,38h,02h,0ffh    ;自动聚焦
sdjj:     db 81h,01h,04h,38h,03h,0ffh    ;手动聚焦
zsqh:     db 81h,01h,04h,38h,10h,0ffh    ;自动手动聚焦切换
bphzd:    db 81h,01h,04h,35h,00h,0ffh    ;自动白平衡
bphsn:    db 81h,01h,04h,35h,01h,0ffh    ;白平衡室内模式
bphsw:    db 81h,01h,04h,35h,02h,0ffh    ;白平衡室外模式
ldfw:     db 81h,01h,04h,0dh,00h,0ffh    ;亮度复位
ldzj:     db 81h,01h,04h,0dh,02h,0ffh    ;亮度增加
ldjs:     db 81h,01h,04h,0dh,03h,0ffh    ;亮度减少
kmfw:     db 81h,01h,04h,0ah,00h,0ffh    ;快门复位
kmzj:     db 81h,01h,04h,0ah,02h,0ffh    ;开门增加
kmjs:     db 81h,01h,04h,0ah,03h,0ffh    ;开门减少
gqfw:     db 81h,01h,04h,0bh,00h,0ffh    ;光圈复位
gqzj:     db 81h,01h,04h,0bh,02h,0ffh    ;光圈增加
gqjs:     db 81h,01h,04h,0bh,03h,0ffh    ;光圈减少
zyfw:     db 81h,01h,04h,0ch,00h,0ffh    ;增益复位
zyzj:     db 81h,01h,04h,0ch,02h,0ffh    ;增益增加
zyjs:     db 81h,01h,04h,0ch,03h,0ffh    ;增益减少
bgbcon:   db 81h,01h,04h,33h,02h,0ffh    ;背光打开
bgboff:   db 81h,01h,04h,33h,03h,0ffh    ;背光关闭

          end
1033
gxpfh
文章数:37
年度积分:50
历史总积分:1033
注册时间:2007/6/18
发站内信
发表于:2009/10/15 10:29:50
#4楼
这些数据是依次送出的,比如:88 99 66 AB ;先送出88,再送出99,接着送出66,而后再送出AB,这样每次都是8位!!
1033
gxpfh
文章数:37
年度积分:50
历史总积分:1033
注册时间:2007/6/18
发站内信
发表于:2009/10/15 10:53:26
#5楼
是不是控制摄像头啊??好像只要把数据送完出去就OK了!!应该很容易吧??
匿名用户
文章数:N/A
年度积分:0
历史总积分:0
注册时间:2009/11/4
发站内信
发表于:2009/11/4 18:48:13
#6楼
该用户被锁定,回复内容不予显示!
10454
xlian
文章数:3232
年度积分:94
历史总积分:10454
注册时间:2002/5/7
发站内信
2018论坛热心网友
西门子PLC体验(二)
发表于:2009/11/5 13:22:58
#7楼
设置串口工作模式;数据位,停止位,起始位,校验位,串口速率
。。。
u8 TX_BUF[20]={};
u8 CMD;
#define  UP        1
#define  down    2
...
#define  bgboff  n
switch(CMD)
{
 case(up):  
     {
       send(0x81);
       send(0x01);
       send(0x06);
      ...
       send(0xFF);
    }break;
  ...
  case(bgboff )
   {
    send();
   ...
  }break;

 default:break;
}

40345
tigermu 版主
文章数:14903
年度积分:1303
历史总积分:40345
注册时间:2004/8/12
发站内信
2018论坛优秀版主
2018春节活动(二)
2017论坛优秀版主
2017国庆活动(一)
2016论坛优秀版主
2016国庆活动(一)
2015论坛优秀版主
西门子logo体验(三)
英威腾PLC体验(三)
2015春节活动
2014论坛优秀版主
2013论坛优秀版主
2012论坛优秀版主
2010年度论坛贡献奖
发表于:2009/11/9 16:21:09
#8楼
如果是c语言直接printf就可以。
还有是应该弄成数组,写在程序存储器里。
清泉石上,明月松间。
1049
wxs732
文章数:33
年度积分:50
历史总积分:1049
注册时间:2006/7/30
发站内信
发表于:2009/11/28 15:49:04
#9楼
谢谢各位了
 发送的问题,已经解决。
 还有个问题是 如何发送完等待回复个命令然后再发送别的
比如我 发送个  01 (假如是启动)
设备接收到 01 后回复 个 02( 开启动作执行)
若 返回个 03 (开启动作没执行)
C 我不还不太 熟悉 ,但能看懂,
 谢谢各位的持续关注了

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 非法和不良信息举报

工控网客服热线:0755-86369299
版权所有 工控网 Copyright©2024 Gkong.com, All Rights Reserved

124.8008