Reportviwer matrix show all months/weeks of year
At a high level:

Create a temporary table (a subquery or CTE could be used as well, it's up to you) with the week numbers you want to show, and their corresponding month numbers.

Then modify your query as follows:

SELECT b.ID_Equip_PIMP]
      ,b.[Contrato_Nr]
      ,b.[NomeCliente]
      ,b.[NomeInstituicao]
      ,b.[NomeServico]
      ,b.[NomeMarca]
      ,b.[NomeModelo]
      ,b.[VALOR_CEL]
      ,b.[Data_Plano]
      ,b.[Data_Execucao]
      ,b.[NomeRotina]
      ,b.[TipoRotina]
      ,b.[NomeCategoria]
      ,CASE a.[Mes] 
            WHEN 1 THEN 'JANEIRO' 
            WHEN 2 THEN 'FEVEREIRO' 
            WHEN 3 THEN 'MARÇO' 
            WHEN 4 THEN 'ABRIL' 
            WHEN 5 THEN 'MAIO' 
            WHEN 6 THEN 'JUNHO' 
            WHEN 7 THEN 'JULHO' 
            WHEN 8 THEN 'AGOSTO' 
            WHEN 9 THEN 'SETEMBRO' 
            WHEN 10 THEN 'OUTUBRO' 
            WHEN 11 THEN 'NOVEMBRO' 
            WHEN 12 THEN 'DEZEMBRO' 
       END AS [Mes_Nome]
      ,b.[ID_Equipamento]
      ,b.[Nome]
      ,b.[Marca]
      ,b.[Modelo]
      ,b.[Categoria]
      ,b.[Num_Serie]
      ,b.[Num_Inventario]
      ,b.[Num_Equipamento]
      ,b.[Dia]
      ,a.[Semana]
      ,a.[Mes]
      ,b.[Trimestre]
      ,b.[Semestre]
      ,b.[Ano]
  FROM #temp_table a
         LEFT OUTER JOIN (
                          /*  Place entire current query here, except ORDER BY  */
                         ) b ON (a.Mes = b.Mes AND a.Semana = b.Semana)
 ORDER BY /* place current query's ORDER BY here */
;


The temp table will ensure that you have at least one row for every week; however, if there's no actual data for that week, all the related values except the week and month will be NULL.

You may have to make adjustments on the reporting side, depending on how that handles NULL values.