King Saud University
  Help (new window)
Go Search
تحميل الدليل التدريبي

أسئلة شائعة


 

Appendix G

PicoBlaze assembly program for GSM Module with USB

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

;

;Port definitions

;

CONSTANT status_port, 00            

CONSTANT tx_data_present, 01        

CONSTANT tx_half_full, 02           

CONSTANT tx_full, 04                

CONSTANT rx_data_present, 08                       

CONSTANT rx_half_full, 10            

CONSTANT rx_full, 20                  

;

CONSTANT UART_read_port, 01          

;

CONSTANT UART_write_port, 01         

;

;

CONSTANT USB_FIFO_port, 10          

;

CONSTANT USB_FIFO_ctrl, 20          

CONSTANT USB_rd_ena, 01             

CONSTANT USB_RD, 02                 

CONSTANT USB_WR, 04                

CONSTANT USB_TXE, 40                

CONSTANT USB_RXF, 80                

;

;

;Special Register usage

;

NAMEREG sF, DATA_IN_OUT                 

;

;

;Useful constants

;

;

;ASCII table

;

CONSTANT character_a, 61

CONSTANT character_b, 62

CONSTANT character_c, 63

CONSTANT character_d, 64

CONSTANT character_e, 65

CONSTANT character_f, 66

CONSTANT character_g, 67

CONSTANT character_h, 68

CONSTANT character_i, 69

CONSTANT character_j, 6A

CONSTANT character_k, 6B

CONSTANT character_l, 6C

CONSTANT character_m, 6D

CONSTANT character_n, 6E

CONSTANT character_o, 6F

CONSTANT character_p, 70

CONSTANT character_q, 71

CONSTANT character_r, 72

CONSTANT character_s, 73

CONSTANT character_t, 74

CONSTANT character_u, 75

CONSTANT character_v, 76

CONSTANT character_w, 77

CONSTANT character_x, 78

CONSTANT character_y, 79

CONSTANT character_z, 7A

CONSTANT character_A, 41

CONSTANT character_B, 42

CONSTANT character_C, 43

CONSTANT character_D, 44

CONSTANT character_E, 45

CONSTANT character_F, 46

CONSTANT character_G, 47

CONSTANT character_H, 48

CONSTANT character_I, 49

CONSTANT character_J, 4A

CONSTANT character_K, 4B

CONSTANT character_L, 4C

CONSTANT character_M, 4D

CONSTANT character_N, 4E

CONSTANT character_O, 4F

CONSTANT character_P, 50

CONSTANT character_Q, 51

CONSTANT character_R, 52

CONSTANT character_S, 53

CONSTANT character_T, 54

CONSTANT character_U, 55

CONSTANT character_V, 56

CONSTANT character_W, 57

CONSTANT character_X, 58

CONSTANT character_Y, 59

CONSTANT character_Z, 5A

CONSTANT character_0, 30

CONSTANT character_1, 31

CONSTANT character_2, 32

CONSTANT character_3, 33

CONSTANT character_4, 34

CONSTANT character_5, 35

CONSTANT character_6, 36

CONSTANT character_7, 37

CONSTANT character_8, 38

CONSTANT character_9, 39

CONSTANT character_colon, 3A

CONSTANT character_fullstop, 2E

CONSTANT character_semi_colon, 3B

CONSTANT character_minus, 2D

CONSTANT character_plus, 2B

CONSTANT character_comma, 2C

CONSTANT character_less_than, 3C       ;'<'

CONSTANT character_greater_than, 3E    ;'>'

CONSTANT character_open, 28            ;'('

CONSTANT character_close, 29           ;')'

CONSTANT character_divide, 2F          ;'/'

CONSTANT character_equals, 3D

CONSTANT character_space, 20

CONSTANT character_CR, 0D              ;carriage return

CONSTANT character_LF, 0A              ;line feed

CONSTANT character_question, 3F        ;'?'

CONSTANT character_dollar, 24

CONSTANT character_exclaim, 21         ;'!'

CONSTANT character_BS, 08              ;Back Space command character

CONSTANT character_XON, 11             ;Flow control ON

CONSTANT character_XOFF, 13            ;Flow control OFF

;

;

;

;

loop:

CALL read_from_UART                   

CALL NZ, write_USB_FIFO               

CALL read_USB_FIFO                    

CALL NZ, send_to_UART                 

JUMP loop     

;

;

;***********************************************************************

;USB communication routines

;***********************************************************************

;Registers used s0 and DATA_IN_OUT

;

read_from_UART:

INPUT s0, status_port                 

TEST s0, rx_data_present             

RETURN Z                              

INPUT DATA_IN_OUT, UART_read_port      

OR s0, FF                             

RETURN

;

;

read_USB_FIFO:

INPUT s0, USB_FIFO_ctrl               

TEST s0, USB_RXF                      

RETURN Z                              

LOAD s0, USB_rd_ena                 

OUTPUT s0, USB_FIFO_ctrl

OR s0, USB_RD                         

OUTPUT s0, USB_FIFO_ctrl

LOAD s0, s0                           

INPUT DATA_IN_OUT, USB_FIFO_port      

LOAD s0, 00                           

OUTPUT s0, USB_FIFO_ctrl

OR s0, FF                             

RETURN                                

;

;Transmit one character to the UART

 

 send_to_UART: 

INPUT s0, status_port                 

TEST s0, tx_full                     

JUMP NZ, send_to_UART                 

OUTPUT DATA_IN_OUT, UART_write_port   

RETURN                                 

;

write_USB_FIFO:

INPUT s0, USB_FIFO_ctrl               

TEST s0, USB_TXE                      

JUMP Z, write_USB_FIFO                

OUTPUT DATA_IN_OUT, USB_FIFO_port     

LOAD s0, USB_WR                       

OUTPUT s0, USB_FIFO_ctrl

LOAD s0, 00                            

OUTPUT s0, USB_FIFO_ctrl

RETURN                                  ;

 

 

 

 
King   Saud University. All rights reserved, 2007 | Disclaimer | CiteSeerx