亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? drivers.asm

?? 基于凌陽61和pwm電機實現的智能車總程序
?? ASM
?? 第 1 頁 / 共 2 頁
字號:
.INCLUDE HARDWARE.ASM


SET_IOA_IN: .MACRO  //USING R1 FOR TEMP
  R1 = 0x00ff
  [P_IOA_Dir] = R1
  R1 = 0xFFFF
  [P_IOA_Attrib] = R1 
.ENDM

SET_IOA_OUT: .MACRO //USE R1 FOR TEMP
  R1 = 0xFFFF
  [P_IOA_Attrib] = R1
  [P_IOA_Dir] = R1
.ENDM

RD_8279_FIFORAM: .MACRO //改變了 R1,R2的值,使用 R1 返回函數值
  SET_IOA_IN;
  R2 = C_RD_FIFORAM
  [P_IOB_Data] = R2;
//  R1 = 0x0000
//  [P_IOA_Data] = R1;
  R1 = [P_IOA_Data];
  R2 = C_IOB_DEFAULT & ~C_8279_A0
  [P_IOB_Data] = R2
.ENDM 

RD_8279_STATUS: .MACRO //改變了 R1,R2的值,使用 R1 返回函數值
  SET_IOA_IN;
  R2 = C_RD_STATUS 
  [P_IOB_Data] = R2;
//  R1 = 0x0000
//  [P_IOA_Data] = R1;
  R1 = [P_IOA_Data];
  R2 = C_IOB_DEFAULT 
  [P_IOB_Data] = R2
.ENDM 

WR_8279_DISPLAYRAM: .MACRO DATA  //改變了 R1,R2 的值
//  .IFMA 0
//    .MACEXIT
//  .ENDIF
  SET_IOA_OUT;
  R2 = C_WR_RAM
  [P_IOB_Data] = R2;
  R1 = DATA;
  R2 = [P_IOA_Data]
  R2 = R2 & 0x00FF
  R1 = R1 | R2
  [P_IOA_Data] = R1;
  R2 =  C_IOB_DEFAULT & ~C_8279_A0
  [P_IOB_Data] = R2;
.ENDM

WR_8279_CONTROL: .MACRO DATA  //改變了 R1,R2 的值
//  .IFMA 0
//    .MACEXIT
//  .ENDIF
  SET_IOA_OUT;
  R2 = C_WR_CONTROL
  [P_IOB_Data] = R2;
  R1 = DATA;
  R2 = [P_IOA_Data]
  R2 = R2 & 0x00FF
  R1 = R1 | R2
  [P_IOA_Data] = R1;
  R2 =  C_IOB_DEFAULT ;
  [P_IOB_Data] = R2;
.ENDM

EXCHANGER4: .MACRO
  BP = discode;
  R4 = R4 LSR 4
  R4 = R4 LSR 4
  r4 =r4 + bp
  R4 = [R4]
.ENDM

EXCHANGER3: .MACRO
  bp = discode;
  r3 = r3 + bp
  R3 = [R3]
.ENDM

CLEAR_WATCHDOG: .MACRO  //USE R1
  R1 = 0x0001
  [P_Watchdog_Clear] = R1
.ENDM        


.external CPointFlag,TurnLeftNoPwm,ForwardNoPwm
.external Time
.iRAM
.VAR counter = 4;
.VAR LastState = 0;
.var Total = 0
.var B2C = 0
.public TestObjectFlag
.var TestObjectFlag = 0  //一左\二右\三雙\零無障
.public TimeB2C
.var TimeB2C=0
.public Time5Sec
.var Time5Sec=0
.public Time5SecFlag
.var Time5SecFlag=0
.public LastIntCtrlStatus
.var LastIntCtrlStatus

.DATA
.public discode
discode:
.DW 0x3F00,0x0600,0x5b00,0x4f00,0x6600,0x6d00,0x7d00,0x0700,0x7f00,0x6f00;

//==============================================================================
//==============================================================================

.CODE
//////////////////////////
//  SP061 INITIAL       //
//----------------------//
.PUBLIC _SP061_INIT
_SP061_INIT: .PROC
       INT OFF
       R1 = 0x0008
       [P_SystemClock] = R1 
       BP = discode;
/////////////////////
//P_IOA Initial
/////////////////////
     //A口全部做為帶下拉電阻的輸入口
     R1=0xFFFF;               //A口輸入
     [P_IOA_Dir]=R1;
     [P_IOA_Attrib]=R1;
     
     //P_IOB Initial
     //IOB2--->EXT1; IOB3--->EXT2
     R1 = 0x01F3;	                 //設置IOB2,IOB3為輸入
	 [P_IOB_Dir] = R1;               //
	 R1 = 0xFFF3;                    //IOB2,IOB3設置為輸入,高8位輸入
	 [P_IOB_Attrib] = R1;            //
	 R1 = 0xFFFF	
	 [P_IOB_Data] = R1;  
	   
	 //中斷控制寄存器設置
	 R1 = 0xFFFF
	 [P_INT_Clear] = R1
	 R1 = 0x020C; 				     //開中斷IRQ3_EXT1
	 [P_INT_Ctrl] = R1
	 [P_INT_New] = R1
	 
	 r1 = 0x0001
	 [P_Watchdog_Clear] = R1
	 
	 //Timer initial
	 r1 = 0x0007
	 [P_TimerB_Ctrl] = r1
	 r1 = 0x0000
	 [P_TimerB_Data] = r1
	 
//	 r1 = 0x0000
//	 [P_TimeBase_Setup] = r1
	 
	 CALL INIT_8279

	 INT IRQ;                        //開中斷
RETF
.ENDP

//**********************************************//
//Function Name : INIT_8279                     //
//Function : none                               //
//Input    : R1, R2                             //
//Output   : initial 8279,display GOOD on leds  //
//Destroy  : R1,R2                              //
.PUBLIC INIT_8279
INIT_8279: .PROC
  WR_8279_CONTROL 0x0100  //鍵盤/顯示方式命令字
                          //8個字符顯示左入口,編碼掃描鍵盤雙鍵鎖定
  WR_8279_CONTROL 0x3800  //8279掃描頻率設定
  WR_8279_CONTROL 0xD300  //清顯示、FIFO RAM
?LOP:
  nop
  RD_8279_STATUS          //讀狀態REG,比較是否清除完成
  TEST R1,0x8000
  JNZ ?LOP
  WR_8279_CONTROL 0x8000  //地址非自動增加,顯示RAM 0x00
  WR_8279_DISPLAYRAM C_SEG_g  //顯示 g
  WR_8279_CONTROL 0x8100  //地址非自動增加,顯示RAM 0x01
  WR_8279_DISPLAYRAM C_SEG_o  //顯示 o
  WR_8279_CONTROL 0x8200  //地址非自動增加,顯示RAM 0x02
  WR_8279_DISPLAYRAM C_SEG_o  //顯示 o
  WR_8279_CONTROL 0x8300  //地址非自動增加,顯示RAM 0x03
  WR_8279_DISPLAYRAM C_SEG_d  //顯示 d
  RETF
.ENDP

.PUBLIC DisplayKey
DisplayKey: .proc
  push r2,r4 to [sp]
  R3 = [counter]
  cmp r3,0x0
  jne ?next
  r3 = 4
  [counter] = r3
?next:
  R3 = [counter]
  R3 = R3 LSL 4
  R2 = R3 LSL 4
  R3 = 0x8400
  R3 = R3 - R2
  EXCHANGER4
  WR_8279_CONTROL R3
  WR_8279_DISPLAYRAM R4
  R3 = [counter]
  r3 -=1
  [counter]= r3
  pop r2,r4 from [sp] 
retf
.endp

//*************************************//
//          計算速度函數               //
// 參數: R1 為計數值                  //
// 返回:R3中為速度值,R4中為方向狀態  //
//       R4     |      方向            //
//       ------------------            //
//        0     |       正             //
//        1     |       反             //     
.public CalV
CalV: .proc
  r2 = 8          //  單位長度/一秒鐘
  mr = r1 * r2,us
  r1 = r3
//  r2 = 10
//  call F_Divider
  SET_IOA_IN
  R1 = [P_IOA_Data]
  test r1,C_CAR_Dir
  JZ BACKWARD
FORWARD:
  R4 = 0;
  JMP EXIT
BACKWARD:
  R4 = 1;
EXIT:
retf
.endp

//*************************************//
//          計算路程函數               //
// 參數: R1 為計數值                  //
// 返回:R3中為總路程                  //
//                 //
//                 //
//                   //
//                   //  
.public CalLong
CalLong: .proc
  r2 =  4         //  單位長度/一個脈沖
  mr = r1 * r2,us
  cmp r3,140
  jbe next1
GoToC:
  r1 = 1
  [B2C] = r1  
next1:  
  r1 = [CPointFlag]
  test r1,0
  jne quit
  cmp r3,260
//  CMP R3,300
  jbe quit
  
setCPointFlag:
  r1 = 1
  [CPointFlag] = r1
  
quit:   
retf
.endp

//**********************************************//
//Function Name : F_Divder                      //
//Function : R1/R2                              //
//Input    : R1, R2                             //
//Output   : R3; Integer value                  //
//Destroy  : All                                //
//                                                                             
.PUBLIC F_Divider
F_Divider: .proc

         R4 = R1;
         R3 = 0;
         R5 = 0;
Loop_1:
         CMP  R4,R2;
         JB   Loop_2;
         R4 -= R2;
         R3 += 1;
         JMP  Loop_1;
Loop_2:
         R5 += 1;
         CMP  R5,8;                     //Scale : 1/(2^8) = 1/256
         JG   EndDivide;
         R3 = R3 LSL 1;
         R4 = R4 LSL 1;
         JMP Loop_1;
EndDivide:
         R3 = R3 LSR 4;                 //R3/(2^8)
         R3 = R3 LSR 4;
         RETF;
.ENDP

//**********************************************//
//Function Name : Hex2Dec                       //
//Function : Hex2Dec void                       //
//Input    : R3                                 //
//Output   : R3; display on LED                 //
//Destroy  : All                                //
.PUBLIC Hex2Dec
Hex2Dec: .PROC
  push r3 to [sp]
  push r3 to [sp]
  r1 = r3
  R2 = 100  //轉換百位
  CALL F_Divider
  PUSH R3 TO [SP]
  WR_8279_CONTROL 0x8100  //將百位顯示在數碼管上
  EXCHANGER3  //換碼
  WR_8279_DISPLAYRAM R3
  POP R3 FROM [SP]
  r2 = 100
  mr = R3*r2,us  //恢復
  r1 = r3
  pop r3 from [sp]
  r3 = r3 -r1  //求第一次余數
  push r3 to [sp]
  R1 = R3
  r2 = 10  //在余數中轉換十位
  call F_Divider
  PUSH R3 TO [SP]
  WR_8279_CONTROL 0x8200  //將十位顯示在數碼管上
  EXCHANGER3  //換碼
  WR_8279_DISPLAYRAM R3
  POP R3 FROM [SP]
  r2 = 10
  mr = r2*r3,us  //恢復
  r1 = r3
  pop r3 from [sp]
  r3 = r3 - r1  //求第二次余數即個位
  WR_8279_CONTROL 0x8300  //將個位顯示在數碼管上
  EXCHANGER3  //換碼
  WR_8279_DISPLAYRAM R3  
  pop r3 from [sp]
RETF
.ENDP

//**********************************************//
//Function Name : TurnLeft                      //
//Function :  TurnLeft (void)                   //
//Input    : none                               //
//Output   : car turn left                      //
//Destroy  : none                               //
.public TurnLeft
TurnLeft: .proc
  push r1,r2 to [sp]
  SET_IOA_IN;
//  r2 = C_CAR_TurnLeft2
//  r1 = [P_IOA_Data]
  r1 = 0x000f
  r2 = [P_IOA_Data]
  r1 = r1 | r2
//  r2 = 0xfffA
  R2 = r1 & 0xFFF5
//  r2 = r2 & r1
  SET_IOA_OUT
  [P_IOA_Data] = R2
  
  r1 = [B2C]
  test r1,1
  jz ?straight
?round:
  r1 = 0x0500
  r2 = 0x0300
  call F_Pwm
  pc = ?go  
?straight:  
  r1 = 0x0500
  r2 = 0x0230
  call F_Pwm
  call delay_1

?go:
  pop r1,r2 from [sp]
retf
.endp

//**********************************************//
//Function Name : TurnRight                     //
//Function :  TurnRight (void)                  //
//Input    : none                               //
//Output   : car turn right                     //
//Destroy  : none                               //
.PUBLIC TurnRight
TurnRight: .proc
  push r1,r2 to [sp]
  SET_IOA_IN;
//  r2 = C_CAR_TurnRight1
//  r2 = 0xfff5
  r1 = 0x000f
  r2 = [P_IOA_Data]
  r1 = r1 | r2
  R2 = r1 & 0xFFFA
//  r2 = r2 & r1
  SET_IOA_OUT
  [P_IOA_Data] = R2
  r1 = [B2C]
  test r1,1
  jz ?straight
?round:
  r1 = 0x0fff
  r2 = 0x0150
  call F_Pwm
  pc = ?go  
?straight:  
  r1 = 0x0fff
  r2 = 0x0180
  call F_Pwm
?go:
//  call delay_1
  pop r1,r2 from [sp]
retf
.endp


.public LastTurnRight
LastTurnRight: .proc
  SET_IOA_IN
  R1 =[P_IOA_Data]
  R1 = R1 & 0xfff0
  R1= R1|0x000a          //////////右轉控制邏輯////////
  R2 = R1
  SET_IOA_OUT
  [P_IOA_Data] = R2
  R1 = 0x0500
  R2 = 0x0300
  CALL F_Pwm

  R1 = 0x0150          //////右轉時間
  LOP:
R1 -=1
PUSH R1,R5 TO [SP]
NOP
POP R1,R5 FROM [SP]
CMP R1,0
JNE LOP
Retf
.endp

//**********************************************//
//Function Name : Forward                       //
//Function :  Forward  (void)                   //
//Input    : none                               //
//Output   : car go Forward                     //
//Destroy  : none                               //

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩国产成人在线免费| 国产成人亚洲综合a∨婷婷图片| 日韩小视频在线观看专区| 99精品在线免费| 福利91精品一区二区三区| 国产在线视频一区二区三区| 蜜桃av噜噜一区二区三区小说| 调教+趴+乳夹+国产+精品| 亚洲乱码国产乱码精品精小说| 国产精品传媒入口麻豆| 亚洲欧美一区二区视频| 亚洲视频一区在线| 亚洲精品国产第一综合99久久 | 中文字幕亚洲一区二区va在线| 久久综合色婷婷| 国产丝袜在线精品| 欧美激情一区在线观看| 日韩一区欧美小说| 五月婷婷激情综合| 狠狠色丁香婷综合久久| 国产丶欧美丶日本不卡视频| 成人免费视频网站在线观看| 成人性生交大合| 日本道在线观看一区二区| 欧美影视一区二区三区| 日韩亚洲欧美成人一区| 国产日韩精品一区二区浪潮av| 国产精品女主播在线观看| 亚洲精品免费在线观看| 日韩电影在线观看网站| 国产精品亚洲午夜一区二区三区 | wwwwxxxxx欧美| 国产精品美女久久久久aⅴ国产馆| 中文字幕一区二区三区在线观看| 亚洲一区二区三区免费视频| 日本不卡不码高清免费观看| 国产精品一区二区三区99| 91美女视频网站| 91精品国产91久久久久久最新毛片| 日韩区在线观看| 成人免费一区二区三区在线观看| 亚洲福利一区二区三区| 国产激情视频一区二区在线观看 | 国产精品免费久久久久| 亚洲一区二区三区爽爽爽爽爽| 久久99最新地址| 色综合中文综合网| 久久国产精品一区二区| 97久久精品人人澡人人爽| 51午夜精品国产| 亚洲欧洲无码一区二区三区| 全部av―极品视觉盛宴亚洲| 成人一区二区三区视频在线观看| 欧美精品xxxxbbbb| 国产精品婷婷午夜在线观看| 热久久久久久久| 日本高清不卡视频| 中文字幕av免费专区久久| 首页国产丝袜综合| 在线影院国内精品| 国产精品日产欧美久久久久| 麻豆91在线播放免费| 欧美日韩亚洲另类| 日韩美女视频19| 粉嫩绯色av一区二区在线观看| 在线电影欧美成精品| 夜夜亚洲天天久久| 99久久精品国产一区| 欧美经典三级视频一区二区三区| 日韩国产欧美一区二区三区| 日本高清成人免费播放| 成人欧美一区二区三区黑人麻豆 | 成人毛片视频在线观看| 精品国产a毛片| 奇米四色…亚洲| 91精品国产91久久综合桃花| 亚洲妇女屁股眼交7| 欧美在线观看一区二区| 日韩美女精品在线| 色综合久久久久综合99| 中文字幕在线播放不卡一区| 波多野洁衣一区| 国产精品家庭影院| 91女厕偷拍女厕偷拍高清| 日韩一区有码在线| 色妹子一区二区| 樱桃国产成人精品视频| 在线欧美日韩精品| 亚洲精品久久久蜜桃| 在线观看91精品国产入口| 亚洲一区在线看| 91精品国产综合久久香蕉的特点| 午夜精品在线视频一区| 欧美一区二区三区的| 免费人成在线不卡| 国产午夜精品一区二区三区嫩草 | 久久综合狠狠综合久久激情 | 久久久久成人黄色影片| 国产馆精品极品| 亚洲天堂a在线| 在线免费观看日本一区| 天天色综合成人网| 久久婷婷国产综合精品青草| av日韩在线网站| 亚洲国产日韩精品| 欧美videos中文字幕| 成人精品一区二区三区中文字幕| 亚洲激情av在线| 日韩一区二区三区视频在线| 国产精品一区二区x88av| 亚洲另类春色校园小说| 欧美一区二区三区视频在线观看| 国产精品一区二区在线播放| 一区二区三区美女视频| 日韩午夜激情电影| 99久久精品久久久久久清纯| 天堂va蜜桃一区二区三区 | 国产91色综合久久免费分享| 亚洲特级片在线| 欧美tickling网站挠脚心| 91视频在线看| 黑人精品欧美一区二区蜜桃| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆| 欧美日韩日本视频| 不卡视频在线观看| 麻豆成人在线观看| 亚洲一区二区欧美激情| 欧美经典三级视频一区二区三区| 欧美日韩一本到| 91丨九色丨国产丨porny| 国产一区二区三区久久悠悠色av| 亚洲男人的天堂在线观看| 久久精品人人爽人人爽| 在线观看日韩av先锋影音电影院| 国产一区二区不卡| 日本欧美在线观看| 亚洲一二三四区| 亚洲欧洲性图库| 亚洲国产高清在线观看视频| 日韩一级黄色片| 欧美老肥妇做.爰bbww| 色综合中文综合网| 麻豆91精品视频| 视频一区二区欧美| 亚洲高清免费在线| 亚洲影视资源网| 亚洲美女视频在线| 中文字幕亚洲一区二区va在线| 久久一区二区视频| 精品欧美乱码久久久久久1区2区| 欧美视频一区二区| 欧美性videosxxxxx| 色悠悠亚洲一区二区| av不卡在线播放| jizzjizzjizz欧美| 成人app在线| 99re这里只有精品视频首页| 99在线精品观看| 99re这里都是精品| 色噜噜狠狠一区二区三区果冻| 99精品视频中文字幕| 91视视频在线观看入口直接观看www | 欧美三级资源在线| 欧美天堂一区二区三区| 91官网在线观看| 欧美日韩国产影片| 欧美一区二区三区在线观看视频| 91麻豆精品国产91久久久久久久久| 欧美电影一区二区三区| 日韩免费观看2025年上映的电影| 欧美精选一区二区| 精品久久久网站| 国产欧美日韩视频在线观看| 日本一区二区不卡视频| 亚洲人妖av一区二区| 夜色激情一区二区| 日韩av在线免费观看不卡| 国产在线精品不卡| 成人av在线播放网站| 欧洲国内综合视频| 精品日韩在线观看| 国产精品欧美久久久久无广告| 亚洲专区一二三| 久久99精品国产麻豆不卡| 丁香啪啪综合成人亚洲小说 | 在线观看亚洲一区| 欧美一区二区三区免费| 国产精品区一区二区三区| 亚洲愉拍自拍另类高清精品| 久久成人久久鬼色| 97精品超碰一区二区三区| 欧美肥胖老妇做爰| 欧美国产成人在线| 日韩av一二三| 99久久久久免费精品国产| 91精品福利在线一区二区三区| 亚洲欧洲日产国产综合网| 日本vs亚洲vs韩国一区三区| 国产suv精品一区二区6| 6080国产精品一区二区|