Advertisement
mike2545

10X control

Oct 7th, 2011
220
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
QBasic 16.40 KB | None | 0 0
  1. '****************************************************************
  2. '*  Name    : UNTITLED.BAS                                      *
  3. '*  Author  : Michael Mummert                                   *
  4. '*  Notice  : Copyright (c) 2009 [select VIEW...EDITOR OPTIONS] *
  5. '*          : All Rights Reserved                               *
  6. '*  Date    : 8/22/2009                                         *
  7. '*  Version : 1.0                                               *
  8. '*  Notes   :                                                   *
  9. '*          :                                                   *
  10. '****************************************************************
  11.        include "BS2DEFS.BAS"      
  12.        'include "modedefs.bas"
  13.      OSCCON =$60 'clock speed
  14.      ADCON0 = 0   'diable A/D
  15.      ADCON1= 127  'all digital out
  16.      
  17.      define xoutxlat_off 1
  18.      define OSC 4
  19.      
  20.      ' Set Debug pin port
  21.     DEFINE DEBUG_REG    PORTB
  22.     define DEBUGIN_REG PORTB
  23.     ' Set Debug pin bit
  24.     DEFINE DEBUG_BIT    4
  25.     DEFINE DEBUGIN_BIT  1
  26.     'define DEBUG_PACING 2000
  27.     ' Set Debug baud rate
  28.     DEFINE DEBUG_BAUD   2400
  29.      
  30.     ' Set Debug mode: 0 = true, 1 = inverted
  31.     DEFINE DEBUG_MODE   1
  32.     define DEBUGIN_MODE 1
  33.     disable debug
  34.     define I2c_scl porta,3
  35.     define I2C_SDA porta,2
  36.     'define SER2_odd 1
  37.    
  38.      
  39.      state var byte
  40.      house var byte
  41.      unit var byte
  42.      Inital_connection var byte
  43.      
  44. 'SDA   =    porta.2          ' I2C SDA pin
  45. 'SCL  = porta.3            ' I2C SCL pin
  46. I2C_WR CON  $D0              ' I2C write address
  47. I2C_RD CON  $D1              ' I2C read address
  48.  
  49. Readtime VAR byte             ' Set/Read time flag
  50. Second VAR Byte              ' Store second value
  51. Minute VAR Byte              ' Store minute value
  52. Hour VAR Byte                ' Store hour value
  53. Day VAR Byte                 ' Store day value
  54. Date VAR Byte                ' Store date value
  55. Month VAR Byte               ' Store month value
  56. Year VAR Byte                ' Store year value
  57. x var byte
  58. y var byte
  59. default_time var byte
  60. default_slot var byte
  61.  
  62. unit_1_Hour_on var byte
  63. unit_1_Minute_on var byte
  64. unit_1_Hour_Off var byte
  65. unit_1_Minute_Off var byte
  66.  
  67. unit_2_Hour_on var byte
  68. unit_2_Minute_on var byte
  69. unit_2_Hour_Off var byte
  70. unit_2_Minute_Off var byte
  71.  
  72. unit_3_Hour_on var byte
  73. unit_3_Minute_on var byte
  74. unit_3_Hour_Off var byte
  75. unit_3_Minute_Off var byte
  76.  
  77. unit_4_Hour_on var byte
  78. unit_4_Minute_on var byte
  79. unit_4_Hour_Off var byte
  80. unit_4_Minute_Off var byte
  81.  
  82. unit_5_Hour_on var byte
  83. unit_5_Minute_on var byte
  84. unit_5_Hour_Off var byte
  85. unit_5_Minute_Off var byte
  86.  
  87. unit_6_Hour_on var byte
  88. unit_6_Minute_on var byte
  89. unit_6_Hour_Off var byte
  90. unit_6_Minute_Off var byte
  91.  
  92. unit_7_Hour_on var byte
  93. unit_7_Minute_on var byte
  94. unit_7_Hour_Off var byte
  95. unit_7_Minute_Off var byte
  96.  
  97. unit_8_Hour_on var byte
  98. unit_8_Minute_on var byte
  99. unit_8_Hour_Off var byte
  100. unit_8_Minute_Off var byte
  101.  
  102. unit_9_Hour_on var byte
  103. unit_9_Minute_on var byte
  104. unit_9_Hour_Off var byte
  105. unit_9_Minute_Off var byte
  106.  
  107. unit_10_Hour_on var byte
  108. unit_10_Minute_on var byte
  109. unit_10_Hour_Off var byte
  110. unit_10_Minute_Off var byte
  111.  
  112. unit_11_Hour_on var byte
  113. unit_11_Minute_on var byte
  114. unit_11_Hour_Off var byte
  115. unit_11_Minute_Off var byte
  116.  
  117. unit_12_Hour_on var byte
  118. unit_12_Minute_on var byte
  119. unit_12_Hour_Off var byte
  120. unit_12_Minute_Off var byte
  121.  
  122. unit_13_Hour_on var byte
  123. unit_13_Minute_on var byte
  124. unit_13_Hour_Off var byte
  125. unit_13_Minute_Off var byte
  126.  
  127. unit_14_Hour_on var byte
  128. unit_14_Minute_on var byte
  129. unit_14_Hour_Off var byte
  130. unit_14_Minute_Off var byte
  131.  
  132. unit_15_Hour_on var byte
  133. unit_15_Minute_on var byte
  134. unit_15_Hour_Off var byte
  135. unit_15_Minute_Off var byte
  136.  
  137. unit_16_Hour_on var byte
  138. unit_16_Minute_on var byte
  139. unit_16_Hour_Off var byte
  140. unit_16_Minute_Off var byte
  141. house =0
  142. unit = 0  
  143.   'debug "start ",cr
  144. GOSUB get_data
  145.      
  146.    
  147.    
  148. MAIN:
  149.  
  150.   serin2 portA.4,16780,5000,No_Data, [dec Inital_connection]
  151.    enable debug
  152.    debug   dec Inital_connection ,cr
  153.    disable debug
  154.    IF Inital_connection = 250 THEN   'set time
  155.    
  156.    GOTO settime
  157.    endif
  158.    IF Inital_connection = 150 THEN  'turn radio button on
  159.    GOTO unit_on
  160.    endif
  161.    IF Inital_connection = 151 THEN    'turn radio button off
  162.    GOTO unit_off
  163.    endif
  164.    IF Inital_connection = 152 THEN    'unit 1
  165.    default_slot = 0
  166.    GOTO unit_SetTime
  167.    endif
  168.    IF Inital_connection = 153 THEN    'unit 2
  169.    default_slot = 4
  170.    GOTO unit_SetTime
  171.    endif
  172.     IF Inital_connection = 154 THEN    'unit 3
  173.     default_slot = 8
  174.    GOTO unit_SetTime
  175.    endif
  176.    IF Inital_connection = 155 THEN     'unit 4
  177.    default_slot = 12
  178.    GOTO unit_SetTime
  179.    endif
  180.    IF Inital_connection = 156 THEN     'unit 5
  181.    default_slot = 16
  182.    GOTO unit_SetTime
  183.    endif
  184.    IF Inital_connection = 157 THEN     'unit 6
  185.    default_slot = 20
  186.    GOTO unit_SetTime
  187.    endif
  188.     IF Inital_connection = 158 THEN     'unit 7
  189.    default_slot = 24
  190.    GOTO unit_SetTime
  191.    endif
  192.    IF Inital_connection = 159 THEN     'unit 8
  193.    default_slot = 28
  194.    GOTO unit_SetTime
  195.    endif
  196.     IF Inital_connection = 160 THEN     'unit 9
  197.    default_slot = 32
  198.    GOTO unit_SetTime
  199.    endif
  200.    IF Inital_connection = 161 THEN     'unit 10
  201.    default_slot = 36
  202.    GOTO unit_SetTime
  203.    endif
  204.    IF Inital_connection = 162 THEN     'unit 11
  205.    default_slot = 40
  206.    GOTO unit_SetTime
  207.    endif
  208.     IF Inital_connection = 163 THEN     'unit 12
  209.    default_slot = 44
  210.    GOTO unit_SetTime
  211.    endif
  212.    IF Inital_connection = 164 THEN     'unit 13
  213.    default_slot = 48
  214.    GOTO unit_SetTime
  215.    endif
  216.     IF Inital_connection = 165 THEN     'unit 14
  217.    default_slot = 52
  218.    GOTO unit_SetTime
  219.    endif
  220.    IF Inital_connection = 166 THEN     'unit 15
  221.    default_slot = 56
  222.    GOTO unit_SetTime
  223.    endif
  224.    IF Inital_connection = 167 THEN     'unit 16
  225.    default_slot = 60
  226.    GOTO unit_SetTime
  227.    endif
  228.      IF Inital_connection = 240 THEN   'get unit times
  229.    GOTO Get_Times
  230.    endif
  231.    
  232.    GOTO main
  233. No_Data:
  234.     I2Cwrite porta.2 ,porta.3, I2C_WR, [0]
  235.   I2Cread porta.2 ,porta.3, I2C_RD, [Second,Minute,Hour,Day,Date,Month,Year]
  236.  
  237.    enable debug
  238.   DEBUG CR, "The time is ",HEX2 Month,"/",HEX2 Date, "/20",HEX2 Year, "    ",hex2 Hour,":",HEX2 Minute,".",HEX2 Second,CR,CR
  239.    disable debug
  240.    'unit 1
  241.    IF unit_1_Hour_on = Hour AND unit_1_Minute_on = Minute THEN
  242.      Xout porta.0, porta.1, [0\0,0\unitOn]
  243.      endif
  244.    IF unit_1_hour_off = hour AND unit_1_minute_off = Minute THEN
  245.     Xout porta.0, porta.1, [0\0,0\unitOff]
  246.     endif
  247.     'unit 2
  248.     IF unit_2_Hour_on = Hour AND unit_2_Minute_on = Minute THEN
  249.      Xout porta.0, porta.1, [0\1,0\unitOn ]
  250.      endif
  251.    IF unit_2_hour_off = hour AND unit_2_minute_off = Minute THEN
  252.     Xout porta.0, porta.1, [0\1,0\unitOff]
  253.     endif
  254.      'unit 3
  255.       IF unit_3_Hour_on = Hour AND unit_3_Minute_on = Minute THEN
  256.      Xout porta.0, porta.1, [0\2,0\unitOn ]
  257.      endif
  258.    IF unit_3_hour_off = hour AND unit_3_minute_off = Minute THEN
  259.     Xout porta.0, porta.1, [0\2,0\unitOff]
  260.     endif
  261.      'unit 4
  262.      IF unit_4_Hour_on = Hour AND unit_4_Minute_on = Minute THEN
  263.      Xout porta.0, porta.1, [0\3,0\unitOn ]
  264.      endif
  265.    IF unit_4_hour_off = hour AND unit_4_minute_off = Minute THEN
  266.     Xout porta.0, porta.1, [0\3,0\unitOff]
  267.     endif
  268.      'unit 5
  269.      IF unit_5_Hour_on = Hour AND unit_5_Minute_on = Minute THEN
  270.      Xout porta.0, porta.1, [0\4,0\unitOn ]
  271.      'debug "ON",cr
  272.      endif
  273.    IF unit_5_hour_off = hour AND unit_5_minute_off = Minute THEN
  274.     Xout porta.0, porta.1, [0\4,0\unitOff]
  275.     endif
  276.      'unit 6
  277.        IF unit_6_Hour_on = Hour AND unit_6_Minute_on = Minute THEN
  278.      Xout porta.0, porta.1, [0\5,0\unitOn ]
  279.      endif
  280.      IF unit_6_hour_off = hour AND unit_6_minute_off = Minute THEN
  281.     Xout porta.0, porta.1, [0\5,0\unitOff]
  282.     endif
  283.     'unit 7
  284.      IF unit_7_Hour_on = Hour AND unit_7_Minute_on = Minute THEN
  285.      Xout porta.0, porta.1, [0\6,0\unitOn ]
  286.      endif
  287.       IF unit_7_hour_off = hour AND unit_7_minute_off = Minute THEN
  288.     Xout porta.0, porta.1, [0\6,0\unitOff]
  289.     endif
  290.     'unit 8
  291.      IF unit_8_Hour_on = Hour AND unit_8_Minute_on = Minute THEN
  292.      Xout porta.0, porta.1, [0\7,0\unitOn ]
  293.      endif
  294.       IF unit_8_hour_off = hour AND unit_8_minute_off = Minute THEN
  295.     Xout porta.0, porta.1, [0\7,0\unitOff]
  296.     endif
  297.      'unit 9
  298.      IF unit_9_Hour_on = Hour AND unit_9_Minute_on = Minute THEN
  299.      Xout porta.0, porta.1, [0\8,0\unitOn ]
  300.      endif
  301.       IF unit_9_hour_off = hour AND unit_9_minute_off = Minute THEN
  302.     Xout porta.0, porta.1, [0\8,0\unitOff]
  303.     endif
  304.     'unit 10
  305.      IF unit_10_Hour_on = Hour AND unit_10_Minute_on = Minute THEN
  306.      Xout porta.0, porta.1, [0\9,0\unitOn ]
  307.      endif
  308.       IF unit_10_hour_off = hour AND unit_10_minute_off = Minute THEN
  309.     Xout porta.0, porta.1, [0\9,0\unitOff]
  310.     endif
  311.     'unit 11
  312.      IF unit_11_Hour_on = Hour AND unit_11_Minute_on = Minute THEN
  313.      Xout porta.0, porta.1, [0\10,0\unitOn ]
  314.      endif
  315.       IF unit_11_hour_off = hour AND unit_11_minute_off = Minute THEN
  316.     Xout porta.0, porta.1, [0\10,0\unitOff]
  317.     endif
  318.     'unit 12
  319.      IF unit_12_Hour_on = Hour AND unit_12_Minute_on = Minute THEN
  320.      Xout porta.0, porta.1, [0\11,0\unitOn ]
  321.      endif
  322.       IF unit_12_hour_off = hour AND unit_12_minute_off = Minute THEN
  323.     Xout porta.0, porta.1, [0\11,0\unitOff]
  324.     endif
  325.     'unit 13
  326.      IF unit_13_Hour_on = Hour AND unit_13_Minute_on = Minute THEN
  327.      Xout porta.0, porta.1, [0\12,0\unitOn ]
  328.      endif
  329.       IF unit_13_hour_off = hour AND unit_13_minute_off = Minute THEN
  330.     Xout porta.0, porta.1, [0\12,0\unitOff]
  331.     endif
  332.     'unit 14
  333.      IF unit_14_Hour_on = Hour AND unit_14_Minute_on = Minute THEN
  334.      Xout porta.0, porta.1, [0\13,0\unitOn ]
  335.      endif
  336.       IF unit_14_hour_off = hour AND unit_14_minute_off = Minute THEN
  337.     Xout porta.0, porta.1, [0\13,0\unitOff]
  338.     endif
  339.    'unit 15
  340.      IF unit_15_Hour_on = Hour AND unit_15_Minute_on = Minute THEN
  341.      Xout porta.0, porta.1, [0\14,0\unitOn ]
  342.      endif
  343.       IF unit_15_hour_off = hour AND unit_15_minute_off = Minute THEN
  344.     Xout porta.0, porta.1, [0\14,0\unitOff]
  345.     endif  
  346.      'unit 16
  347.      IF unit_16_Hour_on = Hour AND unit_16_Minute_on = Minute THEN
  348.      Xout porta.0, porta.1, [0\15,0\unitOn ]
  349.      endif
  350.       IF unit_16_hour_off = hour AND unit_16_minute_off = Minute THEN
  351.     Xout porta.0, porta.1, [0\15,0\unitOff]
  352.     endif
  353.    
  354.    
  355.    GOTO main
  356.  
  357.  
  358.  
  359.  
  360.  
  361.  
  362. Settime:
  363.    
  364.     serin2 portA.4,16780, [hex2 hour]
  365.    Hour = Hour & %00111111      ' Disable century
  366.    serin2 portA.4,16780, [hex2 minute]
  367.    serin2 portA.4,16780, [hex2 second]
  368.    Second = Second & %01111111  ' Enable oscillator
  369.    serin2 portA.4,16780, [hex2 day]
  370.    serin2 portA.4,16780, [hex2 date]
  371.    serin2 portA.4,16780, [hex2 month]
  372.    serin2 portA.4,16780, [hex2 year]
  373.    I2Cwrite porta.2 ,porta.3, I2C_WR, [0,Second,Minute,Hour,Day,Date,Month,Year]
  374.    'enable debug
  375.    'DEBUG CR, CR, "The current time has been successfully set!", CR, CR
  376.    'disable debug
  377.   GOTO main
  378.  
  379.   END  
  380.      
  381.      
  382.  unit_on:
  383.        serin2 portA.4,16780, [dec unit]
  384.        
  385.        serin2 portA.4,16780, [dec house]
  386.        
  387.        'debug CR,dec unit,cr
  388.        'debug cr,dec House , cr
  389.        Xout porta.0, porta.1, [house\unit,house\unitOn]
  390.        'Xout porta.0, porta.1, [house\unitoff]
  391.        GOTO main
  392.  unit_off:
  393.  
  394.       serin2 portA.4,16780, [dec unit]
  395.        serin2 portA.4,16780, [dec house]
  396.        Xout porta.0, porta.1, [house\unit,house\unitOff]
  397.        'xout  porta.0, porta.1, [house\unitoff]
  398.          GOTO main
  399.      
  400.      
  401.      
  402.  unit_SetTime:
  403.        
  404.         FOR y = 1 TO 4
  405.        serin2 portA.4,16780, [hex2 default_time ]  
  406.          WRITE default_slot, default_time
  407.         enable debug
  408.       debug  hex2 default_time, cr
  409.       debug  "Slot:" ,dec default_slot, cr
  410.          default_slot =  default_slot + 1
  411.       NEXT
  412.  
  413.        GOSUB get_data
  414.         'debug " Time has been set in eeprom",cr
  415.         disable debug
  416.        GOTO main
  417.  
  418.  
  419.  
  420.  get_times:
  421.   serin2 portA.4,16780,[dec unit]
  422.   serin2 portA.4,16780, [dec house]
  423.   IF unit = 0 AND house =0 THEN  'unit 1
  424.   default_slot = 0
  425.   GOTO get_unit_time
  426.   endif
  427.   IF unit =1 AND house =0 THEN   'unit 2
  428.   default_slot = 4
  429.   GOTO get_unit_time
  430.   endif
  431.   IF unit =2 AND house =0 THEN  'unit 3
  432.   default_slot = 8
  433.   GOTO get_unit_time
  434.   endif
  435.    IF unit =3 AND house =0 THEN  'unit 4
  436.    default_slot = 12
  437.   GOTO get_unit_time
  438.   endif
  439.    IF unit =4 AND house =0 THEN  'unit 5
  440.    default_slot = 16
  441.   GOTO get_unit_time
  442.   endif
  443.     IF unit =5 AND house =0 THEN  'unit 6
  444.    default_slot = 20
  445.   GOTO get_unit_time
  446.   endif
  447.     IF unit =6 AND house =0 THEN  'unit 7
  448.    default_slot = 24
  449.   GOTO get_unit_time
  450.   endif
  451.   IF unit =7 AND house =0 THEN  'unit 8
  452.    default_slot = 28
  453.   GOTO get_unit_time
  454.   endif
  455.    IF unit =8 AND house =0 THEN  'unit 9
  456.    default_slot = 32
  457.   GOTO get_unit_time
  458.   endif
  459.    IF unit =9 AND house =0 THEN  'unit 10
  460.    default_slot = 36
  461.   GOTO get_unit_time
  462.   endif
  463.   IF unit =10 AND house =0 THEN  'unit 11
  464.    default_slot = 40
  465.   GOTO get_unit_time
  466.   endif
  467.    IF unit =11 AND house =0 THEN  'unit 12
  468.    default_slot = 44
  469.   GOTO get_unit_time
  470.   endif
  471.   IF unit =12 AND house =0 THEN  'unit 13
  472.    default_slot = 48
  473.   GOTO get_unit_time
  474.   endif
  475.   IF unit =13 AND house =0 THEN  'unit 14
  476.    default_slot = 52
  477.   GOTO get_unit_time
  478.   endif
  479.   IF unit =14 AND house =0 THEN  'unit 15
  480.    default_slot = 56
  481.   GOTO get_unit_time
  482.   endif
  483.   IF unit =15 AND house =0 THEN  'unit 16
  484.    default_slot = 60
  485.   GOTO get_unit_time
  486.   endif
  487.  GOTO main
  488.  
  489.  
  490.  get_unit_time:
  491.      enable debug
  492.      FOR y = 1 TO 4
  493.     ' debug dec y , cr
  494.      
  495.       READ default_slot, default_time
  496.    serout2 portA.6,16780, [hex2 default_time]
  497.    
  498.     debug hex2 default_time  ,cr
  499.     debug dec default_slot,cr
  500.    
  501.    serin2 portA.4,16780,1000,main, [x]
  502.     default_slot = default_slot +1
  503.     pause 100
  504.    NEXT
  505.     disable debug
  506.    
  507.    GOTO main
  508.    
  509.   get_data:
  510.        'unit 1
  511.        READ 0, unit_1_Hour_on
  512.        READ 1, unit_1_Minute_on
  513.        READ 2, unit_1_Hour_Off
  514.        READ 3, unit_1_Minute_Off
  515.        'unit 2
  516.        READ 4, unit_2_Hour_on
  517.        READ 5, unit_2_Minute_on
  518.        READ 6, unit_2_Hour_Off
  519.        READ 7, unit_2_Minute_Off
  520.         'unit 3
  521.        READ 8, unit_3_Hour_on
  522.        READ 9, unit_3_Minute_on
  523.        READ 10,unit_3_Hour_Off
  524.        READ 11,unit_3_Minute_Off
  525.         'unit 4
  526.        READ 12, unit_4_Hour_on
  527.        READ 13, unit_4_Minute_on
  528.        READ 14, unit_4_Hour_Off
  529.        READ 15, unit_4_Minute_Off
  530.         'unit 5
  531.        READ 16, unit_5_Hour_on
  532.        READ 17, unit_5_Minute_on
  533.        READ 18, unit_5_Hour_Off
  534.        READ 19, unit_5_Minute_Off
  535.        'unit 6
  536.        READ 20, unit_6_Hour_on
  537.        READ 21, unit_6_Minute_on
  538.        READ 22, unit_6_Hour_Off
  539.        READ 23, unit_6_Minute_Off
  540.        'unit 7
  541.        READ 24, unit_7_Hour_on
  542.        READ 25, unit_7_Minute_on
  543.        READ 26, unit_7_Hour_Off
  544.        READ 27, unit_7_Minute_Off
  545.        
  546.        'unit 8
  547.        READ 28, unit_8_Hour_on
  548.        READ 29, unit_8_Minute_on
  549.        READ 30, unit_8_Hour_Off
  550.        READ 31, unit_8_Minute_Off
  551.        
  552.        'unit 9
  553.        READ 32, unit_9_Hour_on
  554.        READ 33, unit_9_Minute_on
  555.        READ 34, unit_9_Hour_Off
  556.        READ 35, unit_9_Minute_Off
  557.        
  558.        'unit 10
  559.        READ 36, unit_10_Hour_on
  560.        READ 37, unit_10_Minute_on
  561.        READ 38, unit_10_Hour_Off
  562.        READ 39, unit_10_Minute_Off
  563.        
  564.        'unit 11
  565.        READ 40, unit_11_Hour_on
  566.        READ 41, unit_11_Minute_on
  567.        READ 42, unit_11_Hour_Off
  568.        READ 43, unit_11_Minute_Off
  569.        
  570.        'unit 12
  571.        READ 44, unit_12_Hour_on
  572.        READ 45, unit_12_Minute_on
  573.        READ 46, unit_12_Hour_Off
  574.        READ 47, unit_12_Minute_Off
  575.        
  576.         'unit 13
  577.        READ 48, unit_13_Hour_on
  578.        READ 49, unit_13_Minute_on
  579.        READ 50, unit_13_Hour_Off
  580.        READ 51, unit_13_Minute_Off
  581.        
  582.        'unit 14
  583.        READ 52, unit_14_Hour_on
  584.        READ 53, unit_14_Minute_on
  585.        READ 54, unit_14_Hour_Off
  586.        READ 55, unit_14_Minute_Off
  587.        
  588.         'unit 15
  589.        READ 56, unit_15_Hour_on
  590.        READ 57, unit_15_Minute_on
  591.        READ 58, unit_15_Hour_Off
  592.        READ 59, unit_15_Minute_Off
  593.        
  594.         'unit 16
  595.        READ 60, unit_16_Hour_on
  596.        READ 61, unit_16_Minute_on
  597.        READ 62, unit_16_Hour_Off
  598.        READ 63, unit_16_Minute_Off
  599.   RETURN
  600.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement