佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 1546|回复: 9

16F88 assembly serial

 关闭 [复制链接]
发表于 6-4-2009 01:55 PM | 显示全部楼层 |阅读模式
最近忙 fyp 真的是忙到超累得~
尤其是要 modify 别人的 assembly code...
我比较在行的是 C..但是为了 project 只好 downgrade 去学 assembly..
有哪位大大对 assembly 在行的吗? 我是很想学习啦..
尤其是 USART transmission....

P/S: 我希望是面对面的方法...
也希望能在这个星期内完成..  谢谢。

[ 本帖最后由 evios 于 9-4-2009 02:30 PM 编辑 ]
回复

使用道具 举报


ADVERTISEMENT

 楼主| 发表于 6-4-2009 09:04 PM | 显示全部楼层
想请问一下。。
这个是 software UART routine 吗?

  1.    list         p=16F88, r=DEC
  2.    errorlevel      -302
  3.    #include      

  4.    __config       _CONFIG1, _BODEN_OFF & _WDT_OFF & _LVP_OFF & _MCLR_OFF & _PWRTE_ON & _INTRC_IO

  5. ;----------------------
  6. ; DECLARE VARIABLES
  7. ;----------------------

  8. cblock         0x20
  9. tmp1
  10. endc

  11. ;----------------------
  12. ; START
  13. ;----------------------
  14.    org       0
  15. main
  16.    banksel      CMCON
  17.    movlw       7
  18.    movwf       CMCON            ; CMCON = 7 set comperators off

  19.    banksel      ANSEL
  20.    clrf      ANSEL

  21.    banksel      TRISA
  22.    clrf      TRISA
  23.    clrf      TRISB

  24.    banksel      SPBRG
  25.    movlw      0x19            ; 0x19=9600 bps (0x0C=19200 bps)
  26.    movwf      SPBRG
  27.    movlw      b'00100100'         ; brgh = high (2)
  28.    movwf      TXSTA            ; enable Async Transmission, set brgh

  29.    banksel      RCSTA
  30.    movlw       b'10010000'         ; enable Async Reception
  31.    movwf      RCSTA


  32.    ; Provide a settling time for startup
  33.    banksel      tmp1
  34.    clrf       tmp1
  35. settle
  36.    decfsz       tmp1, f
  37.    goto       settle


  38.    ; Send a character through the UART
  39. loop
  40.    movlw      'A'
  41.    call      send

  42.    movlw      'B'
  43.    call      send

  44.    goto      $

  45. ;----------------------
  46. ; SEND function
  47. ;----------------------
  48. send
  49.    banksel      TXREG
  50.    movwf       TXREG            ; Send data which has been stored in W

  51. trans_wt
  52.    banksel      TXSTA
  53.    btfss       TXSTA, TRMT         ; Loop until data is sent
  54.    goto      trans_wt      
  55.    return

  56.    end
复制代码
回复

使用道具 举报

发表于 6-4-2009 10:24 PM | 显示全部楼层
原帖由 evios 于 6-4-2009 09:04 PM 发表
想请问一下。。
这个是 software UART routine 吗?

   list         p=16F88, r=DEC
   errorlevel      -302
   #include      

   __config       _CONFIG1, _BODEN_OFF & _WDT_OFF & _LVP_OFF & _MCLR_ ...


你知道uart有多少?
如果这个code给你看,你会觉得是hardware uart还是software uart呢?
回复你之前, 想听听你的意见与看法。
回复

使用道具 举报

 楼主| 发表于 6-4-2009 11:23 PM | 显示全部楼层
原帖由 fritlizt 于 6-4-2009 10:24 PM 发表


你知道uart有多少?
如果这个code给你看,你会觉得是hardware uart还是software uart呢?
回复你之前, 想听听你的意见与看法。


我只知道 16F88 有 built in 的 hardware UART..
可是所有的 port 都用满了..只好用 oSC2 pin..
以我推测应该是 software UART 对吧?
谢谢你的回复
回复

使用道具 举报

发表于 6-4-2009 11:47 PM | 显示全部楼层
原帖由 evios 于 6-4-2009 11:23 PM 发表


我只知道 16F88 有 built in 的 hardware UART..
可是所有的 port 都用满了..只好用 oSC2 pin..
以我推测应该是 software UART 对吧?
谢谢你的回复


从这个code你如何知道port都用满了呢?
回复

使用道具 举报

 楼主| 发表于 7-4-2009 12:14 AM | 显示全部楼层
原帖由 fritlizt 于 6-4-2009 11:47 PM 发表


从这个code你如何知道port都用满了呢?


oh..不是。。这个其实只是 serial communication 的 code 而已
我的 project 已经用完 port A and B 了..port B 去 LCD..
我 check 过 16F88 的 datasheet... OSC2 pin 也是 bidirectional pin..
可以用来做 IO pin..所以打算用它 send serially...
只是要 append 这个 code 去原本已经弄好的 code 有点难..
想问问看大大...你是这方面的专才吗?
回复

使用道具 举报

Follow Us
发表于 7-4-2009 10:28 AM | 显示全部楼层
原帖由 evios 于 6-4-2009 01:55 PM 发表
最近忙 fyp 真的是忙到超累得~
尤其是要 modify 别人的 assembly code
...
我比较在行的是 C..但是为了 project 只好 downgrade 去学 assembly..
有哪位大大对 assembly 在行的吗? 我是很想学习啦..
尤其是 USART ...


呵呵!你酱写,其实间接降低了这个帖的素质,可以直接讲重点好了。不需要那些过门。
你看了版规没有?请先仔细阅读 :【指南】问帖的技巧, 发帖必读 。。
你是要做 USART  还是  UART?

原帖由 evios 于 7-4-2009 12:14 AM 发表


oh..不是。。这个其实只是 serial communication 的 code 而已
我的 project 已经用完 port A and B 了..port B 去 LCD..
我 check 过 16F88 的 datasheet... OSC2 pin 也是 bidirectional pin..
可以用来做 IO pin..所以打算用它 send serially...
只是要 append 这个 code 去原本已经弄好的 code 有点难..


这些资料你该一开始就先讲明,不需要通过打情骂俏的问答。

想问问看大大...你是这方面的专才吗?   


你这句说话真的是在贬低版主及论坛朋友,也很无理。不是吗??难道现在的年轻仔,有钱仔都是酱的素质,悲哀。老实说,我看了真不适味。你认为这里没有专才?

;----------------------
; SEND function
;----------------------
send
   banksel      TXREG
   movwf       TXREG            ; Send data which has been stored in W

trans_wt
   banksel      TXSTA
   btfss       TXSTA, TRMT         ; Loop until data is sent
   goto      trans_wt      
   return



言归正传,你的代码是硬件发送。

评分

参与人数 1积分 +10 收起 理由
fritlizt + 10

查看全部评分

回复

使用道具 举报

 楼主| 发表于 7-4-2009 01:39 PM | 显示全部楼层
原帖由 rothmans 于 7-4-2009 10:28 AM 发表


呵呵!你酱写,其实间接降低了这个帖的素质,可以直接讲重点好了。不需要那些过门。
你看了版规没有?请先仔细阅读 :【指南】问帖的技巧, 发帖必读 。。
你是要做 USART  还是  UART?



这些资料你该一 ...


若有冒犯,本人在此深表歉意
我其实对 assembly不是很了解才贸贸然再次开贴
那么我想请问..若要使用 OCS2 pin 的话
是不是应该使用软体发送?
回复

使用道具 举报


ADVERTISEMENT

发表于 7-4-2009 02:31 PM | 显示全部楼层
原帖由 evios 于 7-4-2009 01:39 PM 发表


若有冒犯,本人在此深表歉意
我其实对 assembly不是很了解才贸贸然再次开贴
那么我想请问..若要使用 OCS2 pin 的话
是不是应该使用软体发送?


你有问题开帖没错,但,需先看版规,重要的是讲重点。可以先介绍你的项目,让论坛朋友先了解后容易着手回答。为何不先展示你的原理图,后说出你的问题为何不用 PIC 内部提供的 UART 资源,而要另外用软件编写 UART。先解释你要用 OSC2 的脚充当什么用途,要跟什么沟通?讲清楚来,不要等到问了才答,酱太浪费时间与资源。

难道没有其他方法解决你这问题了?又或者要去槟城你只知道乘坐汽车而已???
回复

使用道具 举报

发表于 7-4-2009 08:15 PM | 显示全部楼层
原帖由 evios 于 6-4-2009 01:55 PM 发表
最近忙 fyp 真的是忙到超累得~
尤其是要 modify 别人的 assembly code...

你的开场白真的是有够‘揣’。。够258.。。

我比较在行的是 C..但是为了 project 只好 downgrade 去学 assembly..

为了抄别人的code 而学ASM, 应该不是你的本意, 你只是要做FYP, 不是有心学。。。

有哪位大大对 assembly 在行的吗? 我是很想学习啦..

我想对ASM 在行的人已经很少很少了。。。。。大家都转去C了。。。

干嘛你抄别人的ASM? 想必也是很旧很旧的code了。。
16F88 也是很旧很旧我们淘汰不用了。。它当时是用来替代16F84。。。
我是想要抄也抄新一点的。。。

ok, 我把帖封了, 你从新开帖, 按版规,清楚的开帖好吗?
回复

使用道具 举报

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

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 7-1-2025 08:14 AM , Processed in 0.183829 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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