久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1614|回復: 1
打印 上一主題 下一主題
收起左側

bascom avr單片機摩爾斯電碼自動發送仿真程序

[復制鏈接]
跳轉到指定樓層
樓主


rem Main.bas file generated by New Project wizard
rem
rem Created:   周六 11月 18 2023   taotie
rem Processor: ATmega8
rem Compiler:  BASCOM-AVR
rem Software name:  摩爾斯電碼自動發送仿真
rem Write your code here

$regfile = "m8def.dat"
$hwstack = 32
$swstack = 32
$framesize = 32
$crystal =8000000
$baud = 9600

Config Portb.0 = Output
Speaker Alias Portb.0

Dim I As Byte                                               ' 臨時用作循環計數器
Dim M As Byte                                               ' 我們表中當前摩爾斯電碼的索引
Dim L As Byte                                               ' 表示摩爾斯電碼按位生成中最低有效位
Dim P As  Byte                                               '用于端口查詢速度和字符集


Dim char_location As Byte                                    '字符位
Dim char_string As String * 26                               '字符串
Dim char_string_length As Byte                               '字符串長度
Dim char_name As String * 1                                  '單字符名
Dim ASC_byte As Byte At char_name Overlay                    '覆蓋變量(單詞 char 的字節值)

'- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Main:
' 選擇(碼與碼之間、字與字之間、詞與詞之間)時間間隔
CONST D_D = 100               '滴滴答答間隔時間
CONST MA_MA = 200          '   電碼之間間隔時間
CONST DL_DL = 100*20          '段落間隔時間                  
Wait 1

Write_char:
Do
char_string = "1234567890abcdefghijk" '在這里寫入要發送的字符

p=len(char_string)                    '獲取字符串長度
Gosub pouxi_danchi
Loop

pouxi_danchi:                                      '剖析單詞
char_string_length = Len(char_string)              '單詞長度=Len(返回字符串的長度)。
For char_location = 1 To char_string_length        '字符位=1 到 單詞長度
char_name = Mid(char_string , char_location , 1 )  'char_name = Mid(字符串 , 字符位 , 要獲取/設置的字符數。)
print char_name
Gosub Text_out    '調用純文本輸出
Next
if char_string_length=P then waitMS DL_DL          '如果字符串已發送到末尾則暫停x秒
Return

Text_out:                                          ' 過濾掉壞字符;查找有用的字符
        If ASC_byte > 123 Then                     ' 重定向壞字符以暫停
          ASC_byte = 32
        End If

       If ASC_byte > 94 Then                       ' 小寫 -> 大寫
       ASC_byte =ASC_byte - 32
       End If

       ASC_byte = ASC_byte - 32                     ' 本ascii表的字符只有以32開頭的部分

       M = Lookup(ASC_byte , DIANMA_BIAO)           ' 從表中獲取莫爾斯字符

       Gosub Morse
Return



   '摩爾斯電碼生成:

   Morse:
      If M = 0 Then                                         ' 特殊情況:空格而不是不可溢出的ASCII字符
      Goto char_end
      End If

      For I = 1 To 8
        If M = 1 Then                                       ' 該字節只有值1;繪圖結束!
          Goto char_end   '字符結束
        End If
        L = M And &B00000001                                ' 讀取最低階位     
        If L = 1 Then
          Sound Speaker , 360, 550                          '  發出嗒聲
          Else
           Sound Speaker , 120, 550                         '  發出嘀聲
        End If
        Waitms D_D                                          ' 在摩爾斯電碼中暫停
        Shift M , Right , 1                                 ' 將位向右移動一位
       ' wait 1
      Next I

char_end:
     Waitms MA_MA                                            ' 在摩爾斯電碼之間暫停
Return
End

'- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

DIANMA_BIAO:                                             ' 用于純文本輸出


'  Ascii 32 - 47   ->   _!"#$%&'()*+,-./
Data 0 , 0 , &B01010010 , 0 , 0 , 0 , &B00101010 , 0 , &B00101101 , &B01101101 , 0 , &B00101010 , &B01110011 , &B01100001
Data &B01101010 , &B00101001

'  Ascii 48 - 57  ->  0123456789
Data &B00111111 , &B00111110 , &B00111100 , &B00111000 , &B00110000 , &B00100000 , &B00100001 , &B00100011 , &B00100111 , &B00101111

'  Ascii 58 - 64  ->  :;<=>?@
Data &B01000111 , &B01110011 , &B00101101 , &B00110001 , &B01101101 , &B01001100 , 0

'  Ascii 65 -  90        ABCDEFGHIJKLMNOPQRSTUVWXYZ
Data &B00000110 , &B00010001 , &B00010101 , &B00001001 , &B00000010 , &B00010100 , &B00001011 , &B00010000 , &B00000100
Data &B00011110 , &B00001101 , &B00010010 , &B00000111 , &B00000101 , &B00001111 , &B00010110 , &B00011011 , &B00001010
Data &B00001000 , &B00000011 , &B00001100 , &B00011000 , &B00001110 , &B00011001 , &B00011101 , &B00010011

' ASCII 91 -95   ???s (s statt ?
Data &B00011010 , &B00010111 , &B00011100 , &B00001000

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂1 踩
回復

使用道具 舉報

沙發
ID:342822 發表于 2023-12-4 20:14 | 只看該作者

回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 午夜在线免费观看视频 | 性做久久久久久免费观看欧美 | 欧美日韩精品一区二区三区四区 | 久久av.com | 日日摸夜夜添夜夜添特色大片 | 99精品免费 | 在线国产一区二区三区 | 成人区一区二区三区 | 国产激情视频 | 99热精品在线 | 午夜精品在线观看 | 久久久久久久一区二区 | 成人一区二区在线 | 91精品国产一区 | 天天操天天干天天爽 | 亚洲日本一区二区 | 欧美综合国产精品久久丁香 | 午夜免费视频 | 日本久久久一区二区三区 | 日韩在线不卡 | 91在线精品视频 | 日韩电影中文字幕在线观看 | 色欧美综合 | 日韩在线视频一区二区三区 | 夜夜夜久久久 | 日日摸日日添日日躁av | 在线观看国产wwwa级羞羞视频 | 日韩视频一区二区在线 | 成人免费区一区二区三区 | 精产嫩模国品一二三区 | 紧缚调教一区二区三区视频 | 欧美极品少妇xxxxⅹ免费视频 | 国产精品视频久久久 | 美女在线视频一区二区三区 | 天天爱天天操 | 精品1区| 视频一区在线观看 | 亚洲电影一区二区三区 | 国产一区免费 | 在线观看av网站永久 | 精品一区二区视频 |